ANDROID 一个app中有多个activity读取NFC标签问题
来源:互联网 发布:如何投诉淘宝客服态度 编辑:程序博客网 时间:2024/06/05 16:57
ANDROID 一个app中有多个activity读取NFC标签问题
最近在写有关NFC标签读取录入的android APP。由于在AndroidManifest.xml配置使得NFC可以自启动对应activity,但APP中好多activity都需要NFC标签进行读取,这时activity的启动就出现了问题。
···· ···· ···· ···· ···· ····本人原创转载请标注···· ···· ···· ···· ···· ····
- 最初代码如下
activity中获取NFC标签的id号:
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())// NDEF类型 || NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())// 其他类型 ||NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { Toast.makeText(this,byteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)), Toast.LENGTH_LONG).show(); } }
AndroidManifest中配置:
<activity android:name="" android:theme="@style/Theme.AppCompat.Light.NoActionBar" android:launchMode="singleInstance"> <intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED" /> </intent-filter> <intent-filter> <action android:name="android.nfc.action.TAG_DISCOVERED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter" /> </activity>
新建nfc_tech_filter.xml配置:
<?xml version="1.0" encoding="utf-8"?><resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.IsoDep</tech> </tech-list> <tech-list> <tech>android.nfc.tech.NfcV</tech> </tech-list> <tech-list> <tech>android.nfc.tech.NfcF</tech> </tech-list></resources>
到此就可以获得NFC标签的ID了,但问题是我好多activity配置完后每次刷NFC卡总是会将在AndroidManifest中配置的第一个带有NFC配置的activity打开,而不是在当前activity读取NFC标签。之后做了如下修改,将次问题解决:
1.删掉AndroidManifest对应activity配置:
2.将xxxx activity写为:
public class xxxx extends Activity { private NfcAdapter mAdapter; private PendingIntent mPendingIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.xxxxx); mAdapter = NfcAdapter.getDefaultAdapter(this); mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); } @Override protected void onResume() { super.onResume(); //Enable forground dispatching to get the tags mAdapter.enableForegroundDispatch(this, mPendingIntent, null, null); //ended up setting mFilters and mTechLists to null } @Override public void onPause() { super.onPause(); //You need to disable forgroundDispatching here mAdapter.disableForegroundDispatch(this); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())// NDEF类型 || NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())// 其他类型 ||NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { cardIdEditText.setText(byteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID))); } }}
问题解决。
1 0
- ANDROID 一个app中有多个activity读取NFC标签问题
- android nfc常用标签读取
- Android NFC标签写入问题
- NFC-标签内容的读取
- Android NFC 标签 读写
- Android:NFC读取校园卡
- android NFC读取UID
- android 读取NFC序列号
- Android NFC标签添加联系人
- Android设备读写NFC标签
- android nfc开发问题
- 一个app打开另一个app的某个activity的问题
- JavaH使用问题:无法访问android.app.Activity
- Javah使用问题:无法访问android.app.Activity
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- Android中一个app启动另一个app的指定activity
- 浅谈jQuery源码(一)——$.trim
- WHU Contest Problem J.
- 剑指offer(C++)——数据流中的中位数
- 华为李航:NLP 有 5 个基本问题,深度学习有4个做得很好
- Java注解的学习---深入理解Java注解、自己写一个Java注解
- ANDROID 一个app中有多个activity读取NFC标签问题
- Android studio添加第三方类库时出现的版本不兼容问题
- zz的成长
- Linux更改ssh服务远程登录配置
- EL表达式
- 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)
- ElasticSearch之CURL操作
- MPI之Reduce和Allreduce
- 13th浙江省赛K Highway Project