我正在编写简单的SMS管理器,我的应用程序可以查看用于接收新的短信的对话框,就像使用GoSMS一样,现在我想在其他应用程序运行时禁用它,我想在没有打开程序和启动器时查看此对话框活性。我可以使用下面的代码来检测它,但如果用户安装了任何启动器我怎么知道。
ActivityManager am = (ActivityManager) G.context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
String currentRunningActivityName = taskInfo.get(0).topActivity.getClassName();
Log.i(TAG, currentRunningActivityName);
if (currentRunningActivityName.equals("com.android.launcher2.Launcher")) {
///do your task
}
答案 0 :(得分:1)
您可以使用此代码段,此方法可以找到所有启动器,如果返回true,则默认情况下桌面启动器正在运行:
public static Boolean isHomeScreen() {
ActivityManager am = (ActivityManager) G.context.getSystemService( Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
String currentActivity = taskInfo.get(0).topActivity.getClassName();
PackageManager pm = G.context.getPackageManager();
Intent homeIntent = new Intent(Intent.ACTION_MAIN, null);
homeIntent.addCategory(Intent.CATEGORY_DEFAULT);
homeIntent.addCategory(Intent.CATEGORY_HOME);
homeIntent.addCategory(Intent.CATEGORY_MONKEY);
List<ResolveInfo> appList = pm.queryIntentActivities(homeIntent, 0);
for (ResolveInfo temp: appList) {
if (temp.activityInfo.name.equals(currentActivity))
return true;
}
return false;
}