我有一个在Android上运行的服务,我需要知道焦点上是否有任何应用程序,或者"桌面"(主屏幕)是否在焦点上.我不知道这是否适合引用手机的主屏幕.我怎么知道这是关注焦点还是其他一些应用程序?
在服务内部,我有这个代码来获取正在运行的任务:
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
// get the info from the currently running task
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
Run Code Online (Sandbox Code Playgroud)
如果这是桌面或不是,我怎么能从componentInfo中知道?在模拟器上,componentInfo.getPackageName()返回com.android.launcher,但是在galaxy s1中(我只在这个手机中测试过)返回其他内容.
有没有其他方法可以做到这一点?
谢谢.
小智 5
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
ComponentName currentTask = taskInfo.get(0).topActivity;
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_HOME);
mPackageManager = getPackageManager();
List<ResolveInfo> appList = mPackageManager.queryIntentActivities(mainIntent, 0);
for(int i = 0; i < appList.size(); i++) {
ResolveInfo apl = appList.get(i);
if(currentTask.getPackageName().equals(apl.activityInfo.packageName)) {
Log.e(TAG, "ONHOMESCREEN");
}
}
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml中,您需要获得许可
<uses-permission android:name="android.permission.GET_TASKS"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1409 次 |
| 最近记录: |