2016-02-12 57 views
-1

如果它已經運行,我想把另一個應用程序放在前面,否則我不想做任何事情。開始活動的意圖 - 如果運行或忽略意圖帶到前面

通常我啓動其他應用程式,例如以下:

ComponentName compName = new ComponentName(packageName, activityName); 
Intent i = new Intent(Intent.ACTION_MAIN); 
i.addCategory(Intent.CATEGORY_LAUNCHER); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
i.setComponent(compName); 
context.startActivity(i); 

如果我刪除Intent.FLAG_ACTIVITY_NEW_TASK通話將拋出一個異常,說明,它是不允許沒有這個標誌從非活動啓動活動上下文...

我能以其他方式做我想要的嗎?

回答

0

首先檢查應用程序是否處於運行狀態。

ActivityManager am = (ActivityManager) mContext 
      .getSystemService(Activity.ACTIVITY_SERVICE); 
    String packageName = am.getRunningTasks(1).get(0).topActivity 
      .getPackageName(); 

這將返回的是在background.If運行所需的包名運行,那麼調用的意圖否則別指望什麼都不做活動的包名。

+0

這不適用於所有的android版本...在較新的android版本ypu'll需要使用'AccessibilityService',這是一個特殊的權限,用戶將不得不爲你的應用程序手動啓用此權限.. 。使用'AccessibilityService'做它是可能的,但我這樣做,但我想找到一個解決方案,適用於那些不想給我的應用程序特殊權限的人 – prom85