おそらく最良の解決策は、NFCのフォアグラウンドディスパッチを使用しています。マニフェストファイルのインテントフィルタをオフにするには、マニフェストに<activity-alias>
elementを使用します。インテントフィルタを<activity>
要素の代わりに<activity-alias>
に配置することで、アプリで自由に無効化して有効にすることができます。
だから、あなたはあなたのマニフェストであるとします
<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);
してください、新しい設定のみ有効となりますのでご注意アプリを再起動すると(PackageManager.DONT_KILL_APPの代わりに0を考慮する必要があるかもしれません)。また、パッケージマネージャーが新しい設定を有効にするのにはしばらく時間がかかります(おそらく、デバイスの処理速度に依存します)。
私はアプリケーションの終了オプションでこれを実装しましたが、このコードはアプリケーションプロセスを停止していません...アプリケーションを停止したい..... – Siva
'finish( ) '... –
私もそれを使用しましたが、アプリケーションは停止していません。 PackageManager pkgMgr = getPackageManager(); \tコンポーネント名comp =新しいコンポーネント名( "com.usa.sis"、 "com.usa.sis.NFCActivity"); \t pkgMgr.setComponentEnabledSetting(comp、PackageManager.COMPONENT_ENABLED_STATE_DISABLED、 \t); \t finish(); \t android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); これは私のコードです.... – Siva