2016-05-06 23 views
0

他のアプリがフォアグラウンドで実行されていることを検出することはできますか?Androidで他のアプリの実行中のアクティビティを検出するにはどうすればよいですか?

現在フォアグラウンドにあるアプリの特定のアクティビティを検出することはできますか?

たとえば、パッケージIDがcom.netflix.mediaclientの場合、com.netflix.mediaclient.MediaPlayerがアクティブなときを検出する必要があります。

+0

を実行している与えることができます。 – Payal

+1

あなたはこの回答を見ましたか?http://stackoverflow.com/a/27689352/2704821 これはあなたが望むものだと思います – user2704821

答えて

-1

HIIIは

public class DetectCalendarLaunchRunnable implements Runnable { 

@Override 
public void run() { 
    String[] activePackages; 
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { 
    activePackages = getActivePackages(); 
    } else { 
    activePackages = getActivePackagesCompat(); 
    } 
    if (activePackages != null) { 
    for (String activePackage : activePackages) { 
     if (activePackage.equals("com.google.android.calendar")) { 
     //Calendar app is launched, do something 
     } 
    } 
    } 
    mHandler.postDelayed(this, 1000); 
} 

String[] getActivePackagesCompat() { 
    final List<ActivityManager.RunningTaskInfo> taskInfo = mActivityManager.getRunningTasks(1); 
    final ComponentName componentName = taskInfo.get(0).topActivity; 
    final String[] activePackages = new String[1]; 
    activePackages[0] = componentName.getPackageName(); 
    return activePackages; 
} 

String[] getActivePackages() { 
    final Set<String> activePackages = new HashSet<String>(); 
    final List<ActivityManager.RunningAppProcessInfo> processInfos = mActivityManager.getRunningAppProcesses(); 
    for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) { 
    if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
     activePackages.addAll(Arrays.asList(processInfo.pkgList)); 
    } 
    } 
    return activePackages.toArray(new String[activePackages.size()]); 
} 
} 

これは、あなたがいつも)(getLocalClassNameでクラス名を取得することができます活動のOnCreateイベントでの活動名

関連する問題