如何在Android服务中关闭前台应用程序? [英] How to close foreground app in Android service?

查看:774
本文介绍了如何在Android服务中关闭前台应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在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" />

解决方案

您正试图杀死代码中的后台进程

mActivityManager.killBackgroundProcesses(packageInfo.packageName);

您应该使用:

android.os.Process.killProcess(android.os.Process.myPid());

更改上面的一项并检查.

杀死其他应用程序是一种严重的安全隐患,因此受到严格监管.您只能杀死与正在执行杀死操作的程序包具有相同程序包ID的进程.如果您试图杀死自己的进程,它将对其他应用程序无效(除非您拥有root用户的设备并且您的应用程序具有root用户特权).

您可以参考链接以获取更多信息. >

I want to close current foreground app in Android service. However, it does not work in service. Could you have me to fix it? Thanks.

        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);
            }
        }

It also went to function killBackgroundProcesses but it does not close my current foreground app. I am running in Android L with permission

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

解决方案

You are trying to kill background process in your code

mActivityManager.killBackgroundProcesses(packageInfo.packageName);

You should use:

android.os.Process.killProcess(android.os.Process.myPid());

Change with above one and check.

To kill other apps is kind of thing is a serious security concern so is regulated heavily. You can only kill a process that has the same package id as the one that is doing the killing. If you are trying to kill your own process it will work for other apps you can't do it(unless you have a rooted device and your application has root privileges).

You can refer this link for more info.

这篇关于如何在Android服务中关闭前台应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆