我创建了一个运行服务的应用程序,用于读取当前打开并使用它的应用/活动用户。问题是该服务只读取启动器应用程序。它并没有给我回复打开的app / activity。你能帮我吗?我写的代码如下。提前谢谢。
@Override
public void onStart(Intent intent, int startId) {
// For time consuming an long tasks you can launch a new thread here...
Toast.makeText(this, " Service Started", Toast.LENGTH_LONG).show();
Runnable runable = new Runnable() {
public void run() {
try{
ActivityManager am2 = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
String packageName = am2.getRunningTasks(1).get(0).topActivity
.getPackageName();
Log.w("RunningTask", packageName);
handler.postDelayed(this, 8000);
}
catch (Exception e){
}
}
};
handler.postDelayed(runable, 8000);
}
答案 0 :(得分:0)
如果您使用Android 5.0或更高版本,则不推荐使用getRunningTasks()
,并且只会返回一小部分内容,包括来电者自己的任务,以及其他一些任务,例如家庭。
您可以查看在Android 5.1.1之前有效的getRunningAppProcesses()
。请参阅Cannot get foreground activity name in Android Lollipop 5.0 only和Android 5.1.1 and above - getRunningAppProcesses() returns my application package only
使用 getRunningAppProcesses :
的示例ActivityManager am2 = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
String processName = am2.getRunningAppProcesses().get(0).processName;
Log.w("Running process", processName);