獲取android已安裝的應用PackageInfo啟動第三方APP應用
阿新 • • 發佈:2019-01-24
獲取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);//包名