Android 如何通过启动禁用运行应用程序?已完成

Android 如何通过启动禁用运行应用程序?已完成,android,Android,我想做一个任务管理软件,我想检查所有使用android.intent.action.BOOT_的应用程序是否完成,我想在手机启动运行时禁用自动启动。我不知道,如果我需要root权限来完成它,可能会收到任何建议来检查哪些应用程序收到了BOOT\u COMPLETEDintent操作,您可以使用androidPackageManager和ResolveInfo类 Intent intent = new Intent(android.intent.action.BOOT_COMPLETED); Li

我想做一个任务管理软件,我想检查所有使用android.intent.action.BOOT_的应用程序是否完成,我想在手机启动运行时禁用自动启动。我不知道,如果我需要root权限来完成它,可能会收到任何建议来检查哪些应用程序收到了
BOOT\u COMPLETED
intent操作,您可以使用android
PackageManager
ResolveInfo

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));
}
Intent-Intent=新的Intent(android.Intent.action.BOOT_完成);
List listApp=packageManager.QueryInputActivities(intent,0);
对于(ResolveInfo res:listApp){
Log.e(“摄像头应用程序包名称和活动名称”,res.activityInfo.packageName+“”+res.activityInfo.Name));
}
但是我认为不可能更改其他应用程序使用的权限。因此,您无法阻止它在
BOOT\u COMPLETED
时间启动。如果您想这样做,则必须拥有ROOT权限

例如,android market上有一个应用程序允许您这样做

更新:

在android框架结构中,在包含所有已安装应用程序信息的
/data/system/packages.xml
中,包括使用权限(我从未尝试过,也不知道它是否有效),如果您可以修改此文件,那么您可能可以实现您想要的。。
谢谢。

如果您可以找到组件是什么(例如,通过查看应用程序的清单),您可以使用以下命令从adb命令行或根shell禁用组件:pm disable package.name/component.class.name


AutoStart应用程序可以做到这一点。它有GPL(我认为)源代码,如果你的应用程序也是GPL,你也可以在你的应用程序中重复使用。

注意,你不能更改上面的
/data/system/packages.xml
文件来删除
安卓.intent.action.BOOT\u COMPLETED
权限

这是因为android框架在启动时会解析每个apk(即应用程序)清单文件,当它看到
android.intent.action.BOOT_已完成
权限时,就会调用该应用程序

因此,修改文件将无效。我已经试过了,相信我。据我所知,删除android.intent.action.BOOT_COMPLETED权限的唯一方法(除了修改android框架、重新编译并将其加载到手机上)是手动编辑要删除权限的apk文件


显然不适合胆小的人

好问题+1。我还在等待SORelated的答复:。如果我有root权限,如何调用命令停止它,以及如何获取packages.xml来修改它?我知道res.activityInfo.packageName,如果我可以使用root权限停止它,但我可以使用哪个命令?不需要任何命令。只需获得此文件的“删除”权限并将其存储回该文件,当您重新启动设备时,“删除”权限将生效。