Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。
一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:
private void openOtherAPK(String packageName) {
Intent resolveIntent = new Intent(Intent.ACTION_MAIN,null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(packageName);
PackageManager packageManager = getActivity().getPackageManager();
List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(resolveIntent, 0);
ResolveInfo resolveInfo = resolveInfos.iterator().next();
if(resolveInfo != null){
String pName = resolveInfo.activityInfo.packageName;
String cName = resolveInfo.activityInfo.name;
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(pName, cName);
intent.setComponent(cn);
startActivity(intent);
}
}
参数为要启动的apk的包名,包名通过applicationInfo.packageName即可获得。
卸载其他apk:
Uri packageUri = Uri.parse("package:"+ applicationInfo.packageName);
Intent intent = new Intent(Intent.ACTION_DELETE, packageUri);
startActivity(intent);