2016-05-06 33 views
0

是否有可能检测到另一个应用程序在前台运行?如何检测Android中另一个应用程序的运行活动?

是否有可能检测到当前处于前台的应用程序的特定活动?

例如,如果我有一个包ID为com.netflix.mediaclient,我需要检测com.netflix.mediaclient.MediaPlayer何时处于活动状态。

+0

在OnCreate中的活动,你可以通过getLocalClassName(总是拿班级名称)。 – 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()]); 
} 
} 

这可以给你运行活动名称

相关问题