2016-10-26 2 views
1

Gibt es eine Möglichkeit, einen Dienst (Start oder Stopp) nur auszuführen, wenn eine bestimmte App geöffnet ist? Der Fall ist, dass ich einen "Blasen" Service habe (ähnlich wie Facebook) und ich möchte nur erscheinen, wenn ich das Spiel Minecraft PE öffne. Und wenn ich ändere oder ich eine andere Anwendung öffne, möchte ich unsichtbare Blase setzen. Ist das möglich?Kann ich einen Dienst in Android nur ausführen, wenn ich eine bestimmte App geöffnet habe?

Antwort

1

Verwenden Sie diesen Code.

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

Fügen Sie diese in Manifest:

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

Android Studio mir sagt, dass android.permission.GET_TASKS und getRunningTasks (1) ist veraltet. Ist es möglich, dass aus Sicherheitsgründen nicht auf den Namen der aktuell laufenden Klasse zugegriffen werden kann? Vielen Dank. – DaveKiss

+0

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

Verwandte Themen