首先,我在AOSP環境中工作,這裏提到的兩個應用程序都是使用Android源代碼構建的,並且都是系統應用程序(UID是系統)。啓用和禁用Android中的活動或整個應用程序(AOSP源)
在第一次引導/恢復出廠設置時啓動的應用程序被編寫爲利用android.intent.action.DEVICE_INITIALIZATION_WIZARD
意圖過濾器。當應用程序做它的工作,它禁用它的代碼活動
PackageManager pm = mContext.getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("com.xyzapp",
"com.xyzapp.MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
這一切工作正常。我面臨的問題是重新啓用我想從另一個應用程序執行的活動(服務更精確)。
我們幾乎一樣將其關閉:
PackageManager pm = mContext.getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("com.xyzapp",
"com.xyzapp.MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
這種方法是行不通的,我想不通爲什麼。
下面是簡要概述應該如何工作的:
- 首先啓動 - 啓動發射開始
com.xyzapp.MainActivity
以前如果OTA更新可用並且用戶決定要下載並安裝它,在遠端應重新啓用前要恢復和安裝更新com.xyzapp.MainActivity
過程,因此前發射器開始在下次開機
任何提示,想法?
感謝名單
謝謝,但那不幸對我來說並不奏效。但是,我錯過了清單中的CHANGE_COMPONENT_ENABLED_STATE權限,所以這是一個更少的錯誤,我猜測:)。如果我弄清楚發生了什麼,我會更加努力地工作,並會發布。 –
但是你有沒有在logcat中的任何錯誤?您撥打的服務的UID是什麼? – Olaia
我得檢查一下,沒有時間去做。很可能會在週末那樣做。不想粗魯,不想回復這麼久。我將很快發佈logcat的詳細信息。 –