16

別のアプリケーションを強制終了しようとしています。しかし、このコードは別のアプリケーションを強制終了できません。別のアプリケーションを強制終了するのは悪い考えだと知っています。しかし、私には学習目的があり、殺そうとしました。私のコード部分:

Button runningApp = (Button) findViewById(R.id.runningApp);
runningApp.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        String nameOfProcess = "com.example.filepath";
        ActivityManager  manager = (ActivityManager)ApplicationActivity.this.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> listOfProcesses = manager.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo process : listOfProcesses)
        {
            if (process.processName.contains(nameOfProcess))
            {
                Log.e("Proccess" , process.processName + " : " + process.pid);
                android.os.Process.killProcess(process.pid);
                android.os.Process.sendSignal(process.pid, android.os.Process.SIGNAL_KILL);
                manager.killBackgroundProcesses(process.processName);
                break;
            }
        }
    }
});

アクセス許可を追加しました。それらは次のとおりです。

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

LogCatを見るたびに、特定のアプリケーションがバックグラウンドで実行されています。どこが間違っていますか?

4

2 に答える 2

18

強制終了を行っているプロセスと同じユーザー ID を持つプロセスのみを強制終了できます。独自のプロセスを強制終了しようとしている場合は、機能するはずです。それ以外の場合は、それを行うことはできません (ルート化されたデバイスがあり、アプリケーションにルート権限がある場合を除きます)。

于 2012-08-20T11:58:30.567 に答える
3

デバイスがルート化されていて、アプリが /system/app にある場合は、別のアプリを次の方法で無効にしてから有効にすることで強制終了できます。

pm.setApplicationEnabledSetting(packageName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
pm.setApplicationEnabledSetting(packageName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);

これにより、アプリが強制終了され、再びアクセスできるようになります。ただし、ホーム画面のショートカットは消えることに注意してください。

于 2014-03-31T07:05:36.777 に答える