我正在寫一個使用od NFC標籤的應用程序。我希望NFC標籤成爲我的應用的入口點 - 關閉包含標籤的電話卡應該開始我的活動。然後,當活動正在運行時,我想禁用所有可以利用NFC標籤的意圖過濾器,因此另一個關閉過程不會執行任何操作(我不希望我的活動重新開始)。我知道如何「禁用」我的意圖過濾器,使用活動別名:如何「禁用」外部應用程序的意圖過濾器?
<activity-alias android:enabled="true"
android:name=".alias.NFCEntryPoint"
android:targetActivity="pl.mitrue.safedb.NFCEntryPoint"
android:exported="true"
android:icon="@drawable/ic_launcher"
android:label="@string/alias.pl.mitrue.safedb.NFCEntryPoint" >
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
然後,我可以編程方式禁用的別名,所以我的意圖過濾器中禁用過:
getPackageManager().setComponentEnabledSetting(new ComponentName("pl.mitrue.safedb", "pl.mitrue.safedb.alias.NFCEntryPoint"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
現在,這裏的問題:我有其他應用程序使用我的設備上安裝的那種過濾器。現在,當我的應用程序正在運行時,我禁用了我的意圖過濾器(通過禁用活動別名),出現一個對話框,要求我選擇要使用的應用程序。有什麼辦法可以避免這種情況?在最簡單的情況下,一旦我的應用程序啓動,我不想在關閉NFC標籤時採取任何行動。有什麼辦法讓我的申請成爲唯一可以接受外部意向的申請嗎?
爲了記錄:我不想完全關閉NFC(我不知道,如果它甚至有可能),因爲我可能要稍後才能在其他活動中使用它。
我希望我已經說明白了明確。因爲我是新來的,請理解。
謝謝!
不,你不能。您正試圖覆蓋系統安全性,因爲您正在運行沙箱,您無法控制此行爲。 –
好吧,但不知何故,我已安裝的應用程序之一有所需的行爲。在應用程序結束標記的某些地方什麼也不做,在另一些地方執行一個動作(並不總是相同)。我從未被要求在使用我自己的應用程序時選擇像我一樣的活動。這正是我需要的行爲。也許我可以使用某種解決方法? 我不知道是否可以獲取並反編譯從谷歌市場安裝的應用程序的源代碼 - 如果是這樣,我會這樣做,如果我在這裏沒有得到答案。 – mitrue