从服务中读取当前运行活动

时间:2015-09-17 15:33:19

标签: java android android-service

我创建了一个运行服务的应用程序,用于读取当前打开并使用它的应用/活动用户。问题是该服务只读取启动器应用程序。它并没有给我回复打开的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);




}

1 个答案:

答案 0 :(得分:0)

如果您使用Android 5.0或更高版本,则不推荐使用getRunningTasks(),并且只会返回一小部分内容,包括来电者自己的任务,以及其他一些任务,例如家庭。

您可以查看在Android 5.1.1之前有效的getRunningAppProcesses()。请参阅Cannot get foreground activity name in Android Lollipop 5.0 onlyAndroid 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);