0
是否有可能檢測到另一個應用程序在前臺運行?如何檢測Android中另一個應用程序的運行活動?
是否有可能檢測到當前處於前臺的應用程序的特定活動?
例如,如果我有一個包ID爲com.netflix.mediaclient,我需要檢測com.netflix.mediaclient.MediaPlayer何時處於活動狀態。
是否有可能檢測到另一個應用程序在前臺運行?如何檢測Android中另一個應用程序的運行活動?
是否有可能檢測到當前處於前臺的應用程序的特定活動?
例如,如果我有一個包ID爲com.netflix.mediaclient,我需要檢測com.netflix.mediaclient.MediaPlayer何時處於活動狀態。
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()]);
}
}
這可以給你運行活動名稱
在OnCreate中的活動,你可以通過getLocalClassName(總是拿班級名稱)。 – Payal
你看到了這個答案:http://stackoverflow.com/a/27689352/2704821 我認爲這是你想要的 – user2704821