2012-04-11 2 views
0

i filtern die Absicht wie dieseWie kann ich den NTEF_DISCOVERED Intent-Empfänger stoppen, wenn ich diese Anwendung schließe?

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

jetzt das Problem ist, wenn ich den NDEF-Tag in der Nähe von meinem Handy entdecken Sie die Veranstaltung, die ich in meiner Anwendung implementiert läuft (auch nur annähernd Zustand meiner Anwendung auf). Wie kann ich diesen anhalten?

Antwort

2

Wahrscheinlich die beste Lösung wird mit NFC Vordergrund Dispatching. Das Deaktivieren des Intent-Filters in der Manifest-Datei kann jedoch mithilfe des Verzeichnisses <activity-alias> element im Manifest erfolgen. Indem Sie den Intent-Filter in das Element <activity-alias> anstelle des Elements <activity> setzen, können Sie ihn in Ihrer App beliebig aktivieren und deaktivieren.

So nehme an, Sie in Ihrem Manifest haben:

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); 

Bitte beachten Sie, dass die neue Einstellung wird erst wirksam:

<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> 

Dann können Sie die <activity-alias> von einer Aktivität in Ihrer Anwendung durch deaktivieren nach dem Neustart der App (Sie sollten also möglicherweise 0 anstelle von PackageManager.DONT_KILL_APP in Erwägung ziehen). Es kann auch eine Weile dauern, bis der Paketmanager die neue Einstellung aktiviert hat (hängt wahrscheinlich von der Verarbeitungsgeschwindigkeit des Geräts ab).

+0

Nun bin ich mit Ihrem Code nur ... Ich implementierte dies in Anwendung Exit-Option ... aber dieser Code ist nicht den Anwendungsprozess zu stoppen ... Ich möchte die Anwendung zu stoppen ... – Siva

+0

Call 'Finish () '... –

+0

Ich habe das auch benutzt, aber die Anwendung stoppt nicht PackageManager pkgMgr = getPackageManager(); \t Komponentenname comp = neuer Komponentenname ("com.usa.sis", "com.usa.sis.NFCActivity"); \t pkgMgr.setComponentEnabledSetting (comp, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, \t 0); \t Ende(); \t android.os.Process.killProcess (android.os.Process.myPid()); System.exit (0); Das ist mein Code .... – Siva

Verwandte Themen