我想关闭Android服务中的当前前台应用。但是,它在服务中不起作用。你能帮我解决一下吗?感谢。
ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(ACTIVITY_SERVICE);
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
//get a list of installed apps.
packages = pm.getInstalledApplications(0);
ActivityManager mActivityManager = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
String myPackage = getApplicationContext().getPackageName();
for (ApplicationInfo packageInfo : packages) {
if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue;
if(packageInfo.packageName.equals(myPackage )) {
Log.d(TAG,"*************"+packageInfo.packageName);
mActivityManager.killBackgroundProcesses(packageInfo.packageName);
}
}
它也转到了函数killBackgroundProcesses
,但它没有关闭我当前的前台应用程序。我在Android L中经过许可
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
答案 0 :(得分:0)
您正试图在代码中杀死后台进程
mActivityManager.killBackgroundProcesses(packageInfo.packageName);
您应该使用:
android.os.Process.killProcess(android.os.Process.myPid());
更改上面一项并检查。
杀死其他应用程序是一种严重的安全问题因此受到严格监管。您只能终止与正在执行查杀的程序包ID相同的进程。如果您试图杀死自己的进程,它将适用于您无法执行的其他应用程序(除非您拥有root设备并且您的应用程序具有root权限)。
您可以参考此link了解详情。