2016-10-26 12 views
1

特定のアプリが開いている場合にのみ、サービスを実行する方法(開始または停止)はありますか?場合は、私は "バブル"サービス(フェイスブックに似ている)と私はゲームを開くときに表示されたいと思っていますMinecraft PE。私が変更したり、別のアプリケーションを開くと、目に見えないバブルを入れたい。これは可能ですか?特定のアプリを開いている場合にのみAndroidでサービスを実行できますか?

答えて

1

このコードを使用してください。

public class CheckRunningApplicationReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context aContext, Intent anIntent) { 
     try {    
      ActivityManager am = (ActivityManager) aContext 
        .getSystemService(Context.ACTIVITY_SERVICE); 
      List<ActivityManager.RunningTaskInfo> alltasks = am 
        .getRunningTasks(1); 
      for (ActivityManager.RunningTaskInfo aTask : alltasks) { 

       if (aTask.topActivity.getClassName().equals("com.android.phone.InCallScreen") 
        || aTask.topActivity.getClassName().equals("com.android.contacts.DialtactsActivity")) 
       { 
        Toast.makeText(aContext, "Phone Call Screen.", Toast.LENGTH_LONG).show(); 
       } 
       String packageName = "com.example.checkcurrentrunningapplication"; 

       if (aTask.topActivity.getClassName().equals(
         packageName + ".Main")) 
       { 
        // When opens this example screen then show a alert message 
        Toast.makeText(aContext, "Check Current Running Application Example Screen.", 
            Toast.LENGTH_LONG).show(); 
       } 
      } 

     } catch (Throwable t) { 
      Log.i("THROW", "Throwable caught: " 
         + t.getMessage(), t); 
     } 
    } 
} 

マニフェストにこれを追加します。

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

のAndroid Studioはandroid.permission.GET_TASKSとgetRunningTasks(1)が廃止されていることを私に伝えます。セキュリティ上の理由から、現在実行されているクラスの名前にアクセスできない可能性はありますか?ありがとう。 – DaveKiss

+0

http://stackoverflow.com/questions/31156313/activitymanager-getrunningtasks-is-deprecated-android –

関連する問題