2012-04-11 4 views
0

私は私が自分のアプリケーションに実装イベント私の携帯に近いNDEFタグが(閉じた状態でも、私のアプリケーション)を実行しているを発見すると、このNDEF_DISCOVEREDインテント受信者をそのアプリケーションを閉じるときに停止する方法はありますか?

<intent-filter>  
<action android:name="android.nfc.action.NDEF_DISCOVERED"/> 
<category android:name="android.intent.category.DEFAULT"/> 
<data android:mimeType="text/plain" /> 

ような意図は、今の問題は、あるフィルタ。 これを停止するにはどうすればよいですか?

答えて

2

おそらく最良の解決策は、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を考慮する必要があるかもしれません)。また、パッケージマネージャーが新しい設定を有効にするのにはしばらく時間がかかります(おそらく、デバイスの処理速度に依存します)。

+0

私はアプリケーションの終了オプションでこれを実装しましたが、このコードはアプリケーションプロセスを停止していません...アプリケーションを停止したい..... – Siva

+0

'finish( ) '... –

+0

私もそれを使用しましたが、アプリケーションは停止していません。 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

関連する問題