2016-05-06 31 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()]); 
} 
} 

這可以給你運行活動名稱

相關問題