2016-11-25 23 views
0

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を機能するように行ってきましたが、それは私の現在のフォアグラウンドアプリを閉じません。 1上記のチェックと

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

変更を:私はあなたが使用する必要がありますあなたのコード内であなたがバックグラウンドプロセスを殺すためにしようとしているの許可を得てAndroidのLに

mActivityManager.killBackgroundProcesses(packageInfo.packageName); 

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

これを確認してくださいhttp://stackoverflow.com/questions/6733311/android-killing-all-foreground-running-app – Tasneem

答えて

0

を実行しています。

他のアプリを殺すことは重大なセキュリティ上の懸念であるため、厳しく規制されています。あなたは殺害をしているのと同じパッケージIDを持つプロセスだけを殺すことができます。独自のプロセスを強制終了しようとしている場合、実行できない他のアプリケーションでも機能します(rootデバイスがあり、アプリケーションにroot権限がない限り)。

詳しくはlinkを参照してください。

+0

私の入力はパッケージ名です。私は、例えば 'com.google.android.googlequicksearchbox'のようなパッケージ名を削除したい – Jame

+1

自分のアプリを殺すには、myPidがあなたのアプリパッケージIDであるか、他のアプリを殺したいのであればチェックしてください他のソリューションと一緒に。 –

+0

私は自分のアプリの代わりに他のアプリを殺したい – Jame

関連する問題