簡體   English   中英

從服務讀取當前正在運行的活動

[英]Read current running activity from service

我創建了一個運行服務的應用程序,以讀取當前已打開並正在使用的應用程序/活動用戶。 問題在於該服務僅讀取啟動器應用程序。 它並沒有返回我當前打開的應用程序/活動。 你能幫我嗎? 我寫的代碼如下。 提前致謝。

@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);




}

如果您使用的是Android 5.0或更高版本, getRunningTasks()使用getRunningTasks() ,它將僅返回一小部分子集,包括調用者自己的任務,以及其他一些任務,例如home。

您可以查看getRunningAppProcesses() ,該版本在Android 5.1.1之前可以使用。 請參閱僅在Android Lollipop 5.0Android 5.1.1及更高 版本中無法獲取前台活動名稱 -getRunningAppProcesses()僅返回我的應用程序包

使用getRunningAppProcesses的示例:

ActivityManager am2 = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
String processName = am2.getRunningAppProcesses().get(0).processName;
Log.w("Running process", processName);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM