2016-08-01 61 views

回答

0

修改我想通了,我可以通过使用访问功能做到这一点。

@TargetApi(Build.VERSION_CODES.LOLLIPOP) 
public static String getForegroundProcess(Context context) { 
    String topPackageName = null; 
    UsageStatsManager usage = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE); 
    long time = System.currentTimeMillis(); 
    List<UsageStats> stats = usage.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*1000, time); 
    if (stats != null) { 
     SortedMap<Long, UsageStats> runningTask = new TreeMap<Long,UsageStats>(); 
     for (UsageStats usageStats : stats) { 
      runningTask.put(usageStats.getLastTimeUsed(), usageStats); 
     } 
     if (runningTask.isEmpty()) { 
      return null; 
     } 
     topPackageName = runningTask.get(runningTask.lastKey()).getPackageName(); 
    } 
    if(topPackageName==null) { 
     Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS); 
     context.startActivity(intent); 
    } 

    return topPackageName; 
} 

现在不断检查所需的应用程序是否在前台。

String fg=getForegroundProcess(getApplicationContext()); 
    if(fg != null && fg.contains("com.instagram.android")){ 
     startService(new Intent(getApplicationContext(), bdownload.class)); 
    }else { 
     stopService(new Intent(getApplicationContext(), bdownload.class)); 
    } 

我连续运行与作业service.Which上面的代码可用于 棒棒糖以上。

0

目标棒棒糖及其以上的版本是的,你可以做到这一点的唯一方法是通过辅助服务。看看这个页面了解如何创建它。 https://developer.android.com/training/accessibility/service.html他们还需要通过服务 - >辅助功能屏幕启用该服务。

AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED您可以询问前面的软件包以确定Instigram是否在顶部。

你肯定不希望使用getRunningTasks因为函数是在Android 5.0以上版本

相关问题