2013-03-21 54 views
0

我遇到了關於如何獲取主頁啓動程序包名稱的問題。
在Android中,有兩種類型的家庭發射器:獲取主頁啓動程序包名稱並啓動它的最佳方式

  1. 原單發射
  2. 3,第三發射器,如去-發射或OEM

所以,我們不能用指定包名來啓動它。
最後,我想出了一個解決方案。
有沒有其他更好的方法來做到這一點?

//find out the package with ACTION_MAIN & CATEGORY_HOME 
    Intent i = new Intent(); 
    i.setAction(Intent.ACTION_MAIN); 
    i.addCategory(Intent.CATEGORY_HOME); 
    PackageManager pm = this.getPackageManager(); 
    List<ResolveInfo> ris = (List<ResolveInfo>) pm.queryIntentActivities(i, 
      PackageManager.MATCH_DEFAULT_ONLY); 
    Log.i("", ris.size() + ""); 
    //seletc the first one , doc says the first one is the home launcher currently 
    if (ris != null && ris.size() > 0) { 
     String pkg = ris.get(0).activityInfo.packageName; 
     Log.i("HOME PKG NAME ", pkg); 
     //start it 
     i.setClassName(ris.get(0).activityInfo.packageName, ris.get(0).activityInfo.name); 
     startActivity(i); 
    } 

感謝https://groups.google.com/forum/?fromgroups=#!topic/android-developers/-5aGSOdwJ-8

回答

0

您可以使用意向與分類CATEGORY_HOME和行動ACTION_MAIN

Intent startMain = new Intent(Intent.ACTION_MAIN); 
startMain.addCategory(Intent.CATEGORY_HOME); 
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(startMain); 
+0

Sood,謝謝你的回覆。我測試了代碼,它工作正常。這是開始家'活動'的簡單方法,但如果我想知道包名?比如我想檢測'HOME Activity'現在是否運行前景。 – Everett 2013-03-22 01:00:05

相關問題