2012-03-15 33 views
3

我想做一個任務管理器軟,我想檢查所有使用android.intent.action.BOOT_COMPLETED的應用程序,我也想在移動啓動時禁用自動啓動。我不知道,如果我需要root權限來完成它的任何建議可能會收到如何禁用通過BOOT_COMPLETED運行應用程序

+0

不錯的問題+ 1.我也在等待SO – Sameer 2012-03-15 07:19:59

+0

的回覆看看我更新的答案。 – user370305 2012-03-15 07:52:41

回答

1

請注意,您不能更改上面的/data/system/packages.xml文件以刪除android.intent.action.BOOT_COMPLETED權限。

這是因爲android框架在啓動時會分析每個apk(即app)清單文件,並且當它看到android.intent.action.BOOT_COMPLETED權限時,它會在當時調用該應用程序。

因此,修改該文件將不起作用。我試過了 - 相信我。我知道刪除android.intent.action.BOOT_COMPLETED權限(除了修改andorid框架,重新編譯它並將其加載到手機上)的唯一方法是手動編輯要從中刪除權限的apk文件。

顯然不適合心靈的隱隱!

4

要檢查哪些應用程序收到BOOT_COMPLETED意圖的行動,你可以使用Android PackageManagerResolveInfo類類似,

Intent intent = new Intent(android.intent.action.BOOT_COMPLETED); 

List<ResolveInfo> listApp = packageManager.queryIntentActivities(intent, 0); 
for (ResolveInfo res : listApp) { 
    Log.e("Camera Application Package Name and Activity Name",res.activityInfo.packageName + " " + res.activityInfo.name)); 
} 

但我認爲它不可能改變他們使用的其他應用程序的許可。所以你不能阻止它在BOOT_COMPLETED時間開始。如果你想要這個,那麼你需要ROOT權限

有安卓市場,允許你做它的應用之一,例如LBE Privacy Guard

UPDATE:

在Android框架結構,在/data/system/packages.xml它包含所有已安裝的應用程序的信息,包括使用許可,(我從來沒有試過這個也不知道它的工作與否)如果你可以修改這個文件,那麼可能是你可以實現你想要的.. 謝謝..

+0

如果我有root權限,如何調用命令來阻止它,以及如何獲取packages.xml來修改它? – pengwang 2012-03-16 00:32:55

+0

我已經知道res.activityInfo.packageName,如果我可以使用root權限來阻止它,但我可以使用哪個命令? – pengwang 2012-03-16 00:37:52

+0

不需要任何命令。只需從該文件中刪除該文件的權限並將其保存到該文件中,並在重新啓動設備時刪除權限即可生效。 – user370305 2012-03-16 05:18:07

0

如果你能找到(例如,通過查看應用程序的清單),可以使用以下命令禁用adb命令行或root shell中的組件:pm disable package.name/component.class.name

Autostarts應用程序確實這個。它具有GPL(我認爲)源代碼,如果您的應用程序是GPL,則可以重新用於您的應用程序。

相關問題