也許是最好的解決方案是使用NFC前景調度。但是關閉清單文件中的Intent過濾器可以通過在清單中使用<activity-alias>
element來完成。通過將Intent過濾器置於<activity-alias>
而不是<activity>
元素本身,您可以在應用程序中禁用並啓用它。
因此,假設你有你的清單:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.app.package">
...
<activity-alias android:name=".yourActivityAlias"
android:enabled="true" android:targetActivity=".yourActivity">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
....
</manifest>
然後你就可以從活動中您的應用程序通過禁用<activity-alias>
:
PackageManager pkgMgr = getPackageManager();
ComponentName comp = new ComponentName("your.app.package", "your.app.package.yourActivityAlias");
pkgMgr.setComponentEnabledSetting(comp, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
請注意,新的設置纔會生效在重新啓動應用程序(所以你可能要考慮0,而不是PackageManager.DONT_KILL_APP)。此外,包管理員通常需要一些時間才能使新設置生效(可能取決於設備的處理速度)。
現在我只是用你的代碼...我在應用程序退出選項實現這...但是這個代碼不停止應用程序的過程。我想停止應用..... – Siva 2012-04-18 11:58:13
調用'完成( )'... – 2012-04-18 15:03:16
我使用的也有,但是本申請並不停止 PackageManager PKGMGR = getPackageManager(); \t ComponentName comp = new ComponentName(「com.usa.sis」,「com.usa.sis.NFCActivity」); \t pkgMgr.setComponentEnabledSetting(化合物,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, \t 0); \t finish(); \t android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); 這是我的代碼.... – Siva 2012-04-19 04:59:24