android - Handle NFC intents only when preference is set -


i've seen several different apps (like nfc taginfo , nfc taginfo nxp) have option autostart (or show in "select app" list) when tag touched only if option set in preferences, , otherwise seems intent filter totally ignored system.

how can done in android application?

full answer use <activity-alias> in app's manifest, this:

<activity-alias android:name=".activityalias" android:targetactivity=".youractualactivity" android:enabled="false" > <intent-filter> <action android:name="android.nfc.action.ndef_discovered" /> <category android:name="android.intent.category.default" /> </intent-filter> </activity-alias> 

youractualactivity class want able turn on or off intent filter. not want disable complete activity, use activity-alias in put intent filter want enable (here it's disabled default).

in preferenceactivity set listener called when particular setting changed. this:

getpackagemanager().setcomponentenabledsetting( new componentname("your.package.name", "your.package.name.activityalias"), changedbooleanpreference ? packagemanager.component_enabled_state_disabled : packagemanager.component_enabled_state_enabled, packagemanager.dont_kill_app); 

here changedbooleanpreference setting has been changed.

note may take time before package manager has made change effective. depends on android version when , how fast happens (and perhaps on cpu speed of device).


Comments

Popular posts from this blog

javascript - backbone.js Collection.add() doesn't `construct` (`initialize`) an object -

php - Get uncommon values from two or more arrays -

Adding duplicate array rows in Php -