Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android隨筆之——Activity中啟動另一應用

Android隨筆之——Activity中啟動另一應用

編輯:關於Android編程

最近在寫語音交互程序,在語音打開應用這塊碰到如何用代碼控制應用啟動的問題。百度了一下,有兩種方案:1、獲取應用的包名;2、獲取應用的包名、入口類名。     之前對兩種方案都進行了嘗試,發現方案二中存在一個弊端,那就是系統級應用只能獲取到包名,不能獲取到入口類名,這會導致程序報錯,當然你也可以不獲取系統級應用的包名和入口類名。出於簡單方便的考慮,選擇了方案一,廢話不多說,上代碼。   方案一、   1、獲取程序包名:   復制代碼  1      // 獲取PackageManager對象  2         PackageManager packageManager = getPackageManager();  3         // 得到系統安裝的所有程序的PackageInfo對象  4         List<PackageInfo> packages = packageManager.getInstalledPackages(0);  5         // 創建String類型的數組,用來存放獲取的包名  6         ArrayList<String> packageList = new ArrayList<String>();  7   8         for (int i = 0; i < packages.size(); i++) {  9             PackageInfo packageInfo = packages.get(i); 10  11             // 判斷是否是系統級應用 12             if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { 13                 packageList.add(packageInfo.packageName); 14             } 15         } 復制代碼     2、根據獲取的包名啟動應用:   復制代碼  1      // 獲取PackageManager對象  2         PackageManager packageManager = getPackageManager();  3         // 獲取索引為i的包名  4         String packageName = packageList.get(i);  5         // 如果該程序不可啟動(像系統自帶的包,有很多是沒有入口的)會返回NULL  6         Intent intent = packageManager.getLaunchIntentForPackage(packageName);  7   8         if (intent != null) {  9             startActivity(intent); 10         } 復制代碼     方案二、還沒仔細研究過,不過對那些主入口設置<intent-filter>的應用,方案二應該會優於方案一,明天找個時間把這個補上
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved