如何验证某个应用程序是否在Android上运行?

如何验证某个应用程序是否在Android上运行?,android,Android,我试图制作一个android应用程序,验证某个应用程序是否正在运行,如果某个应用程序没有运行,我必须打开它,但我不知道如何验证某个应用程序是否正在运行?谁能帮帮我吗 您可以使用TaskManager查看此示例代码 final ActivityManager ActivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务); 最终列表recentTasks=activityManager.getRunningTasks(

我试图制作一个android应用程序,验证某个应用程序是否正在运行,如果某个应用程序没有运行,我必须打开它,但我不知道如何验证某个应用程序是否正在运行?谁能帮帮我吗

您可以使用TaskManager查看此示例代码

final ActivityManager ActivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_服务);
最终列表recentTasks=activityManager.getRunningTasks(Integer.MAX_值);
/**最新任务。获取位于顶部的(0)活动>>您的应用程序和数字1将成为下一个任务**/
String pack=recentTasks.get(0.baseActivity.toShortString();
你也可以像这样通过UsageStats获得跑步应用程序的信息

try{
  AppOpsManager appOps = (AppOpsManager) getSystemService(APP_OPS_SERVICE);
  int mode = appOps.checkOp("android:get_usage_stats", android.os.Process.myUid(), getPackageName());
  if(mode == AppOpsManager.MODE_ALLOWED) {//should turn on UsageStats
    UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService(USAGE_STATS_SERVICE);
    List<UsageStats> queryUsageStats = mUsageStatsManager
                    .queryUsageStats(UsageStatsManager.INTERVAL_DAILY,
            System.currentTimeMillis() - 1000*60,           //begin
            System.currentTimeMillis());                    //end
    Collections.sort(queryUsageStats, new LastTimeLaunchedComparator());
    try{
      CustomUsageStats customUsageStats = new CustomUsageStats();
      customUsageStats.usageStats = queryUsageStats.get(1);
      String previousAppPack = customUsageStats.usageStats.getPackageName();
      //the package of app before your app
    }
    catch (Exception e){}
    }
试试看{
AppOpsManager appOps=(AppOpsManager)getSystemService(应用程序运行服务);
int mode=appOps.checkOp(“android:get_usage_stats”,android.os.Process.myUid(),getPackageName());
如果(mode==AppOpsManager.mode_ALLOWED){//应该打开UsageStats
UsageStatsManager mUsageStatsManager=(UsageStatsManager)getSystemService(用法统计服务);
列表查询SageStats=mUsageStatsManager
.queryUsageStats(USAGestasManager.INTERVAL_每日,
System.currentTimeMillis()-1000*60,//开始
System.currentTimeMillis());//结束
排序(queryUsageStats,新的LastTimeLaunchedComparator());
试一试{
CustomUsageStats CustomUsageStats=新的CustomUsageStats();
customUsageStats.usageStats=queryUsageStats.get(1);
字符串previousAppPack=customUsageStats.usageStats.getPackageName();
//应用程序之前的应用程序包
}
捕获(例外e){}
}

请说得更具体一些。请参阅接受的答案。或者,这里:这种方法在几年前就被弃用了。@Commonware我添加了另一种解决方案。
try{
  AppOpsManager appOps = (AppOpsManager) getSystemService(APP_OPS_SERVICE);
  int mode = appOps.checkOp("android:get_usage_stats", android.os.Process.myUid(), getPackageName());
  if(mode == AppOpsManager.MODE_ALLOWED) {//should turn on UsageStats
    UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService(USAGE_STATS_SERVICE);
    List<UsageStats> queryUsageStats = mUsageStatsManager
                    .queryUsageStats(UsageStatsManager.INTERVAL_DAILY,
            System.currentTimeMillis() - 1000*60,           //begin
            System.currentTimeMillis());                    //end
    Collections.sort(queryUsageStats, new LastTimeLaunchedComparator());
    try{
      CustomUsageStats customUsageStats = new CustomUsageStats();
      customUsageStats.usageStats = queryUsageStats.get(1);
      String previousAppPack = customUsageStats.usageStats.getPackageName();
      //the package of app before your app
    }
    catch (Exception e){}
    }