1. 程式人生 > >獲取android已安裝的應用PackageInfo啟動第三方APP應用

獲取android已安裝的應用PackageInfo啟動第三方APP應用

獲取android已安裝的應用PackageInfo

獲取已安裝的應用

    public static ArrayList<AppInfo> getInstalledApps(Context context) {

        ArrayList<AppInfo> res = new ArrayList<AppInfo>();
        // 獲取手機應用的集合
        List<PackageInfo> packs = context.getPackageManager()
                .getInstalledPackages(0
); for (int i = 0; i < packs.size(); i++) { PackageInfo p = packs.get(i); // 定義應用bean物件 AppInfo newInfo = new AppInfo(); // 應用名 newInfo.setAppname(p.applicationInfo.loadLabel( context.getPackageManager()).toString()); // 包名
newInfo.setPname(p.packageName); // 獲取清單檔案的versionName版本名 newInfo.setVersionName(p.versionName); // 獲取清單檔案的versionCode版本號 newInfo.setVersionCode(p.versionCode); res.add(newInfo); } return res; }

啟動第三方應用

appBgName:應用包名

已經包名啟動
Intent minIntent = this.getPackageManager()
                                    .getLaunchIntentForPackage(packageName);
                            startActivity(minIntent);
已知包名和類名啟動應用程式
 Intent intent = new Intent(Intent.ACTION_MAIN); 
                intent.addCategory(Intent.CATEGORY_LAUNCHER); 

                ComponentName cn = new ComponentName(packageName, className); 

                intent.setComponent(cn); 
                context.startActivity(intent); 

已知第三方應用的包名和指定類的action啟動,可以啟動第三方應用的指定Activity,並且傳遞引數,指定Activity必須設定Action;

Intent mIntent = new Intent();
            mIntent.setPackage("com.test..");//包名
            mIntent.setAction("android.intent.action.ABC");//action

            mIntent.putExtra("a", "a");
            mIntent.putExtra("b", "b");
            mIntent.putExtra("c", 1);

            startActivity(mIntent);
     <activity
            android:name="com.test.XXXActivity"
            android:screenOrientation="landscape" >
            <intent-filter>
                <action android:name="android.intent.action.ABC" />

                <category android:name="android.intent.category.DEFAULT" >
                </category>

            </intent-filter>
        </activity>

根據包名關閉應用

    ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
                        am.killBackgroundProcesses(appBgName);//包名