2012-03-15 34 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,则可以重新用于您的应用程序。

相关问题