我有一個關於android NFC的問題。Android NFC感應和讀取標籤數據在同一時間
我已經完成了關於讀寫的功能,但仍然有一個問題。
我在我的標籤中寫了AAR,第一次感應後,它可以啓動我的應用程序。
第二次感應(我的應用程序啓動),我可以從NFC標籤讀取數據。
是否有可能只是感應一次,可以啓動我的應用程序並從標籤中獲取數據?
我有一個關於android NFC的問題。Android NFC感應和讀取標籤數據在同一時間
我已經完成了關於讀寫的功能,但仍然有一個問題。
我在我的標籤中寫了AAR,第一次感應後,它可以啓動我的應用程序。
第二次感應(我的應用程序啓動),我可以從NFC標籤讀取數據。
是否有可能只是感應一次,可以啓動我的應用程序並從標籤中獲取數據?
在AndroidManifest -
<activity
android:name=".TagDiscoverer"
android:alwaysRetainTaskState="true"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:screenOrientation="nosensor" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"/>
</activity>
,您應該開始的OnCreate()的NFC收養..
/**
* Initiates the NFC adapter
*/
private void initNfcAdapter() {
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
mPendingIntent = PendingIntent.getActivity(this, 0,
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
}
中的onResume()
現在...
@Override
protected void onResume() {
super.onResume();
if (nfcAdapter != null) {
nfcAdapter.enableForegroundDispatch(this, mPendingIntent, null, null);
}
}
謝謝!我的問題已修復! –
使用低於模式(從here)。簡介:
前景模式允許您以發送到onNewIntent的意圖的形式捕獲掃描標籤。 onResume將遵循onNewIntent調用,所以我們將在那裏處理意圖。但是onResume也可以來自其他來源,所以我們添加一個布爾變量來確保我們只處理每個新的意圖一次。
活動啓動時還會出現意圖。通過初始化布爾變量爲false,我們將其適用於上述流程 - 您的問題應該得到解決。
protected boolean intentProcessed = false;
public void onNewIntent(Intent intent) {
Log.d(TAG, "onNewIntent");
// onResume gets called after this to handle the intent
intentProcessed = false;
setIntent(intent);
}
protected void onResume() {
super.onResume();
// your current stuff
if(!intentProcessed) {
intentProcessed = true;
processIntent();
}
}
無法理解你的問題..Do要讀取標籤,當你tagdiscoverer活動是forground? – Jambaaz
謝謝你的回覆!我的問題是「如果我的應用程序沒有啓動,是否可以讀取標籤數據並同時啓動我的應用程序?(只需感應標籤一次)」 –
是的,這是可能的 – ThomasRS