获取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);//包名