apk安装完成后,会生成一个存放apk安装的路径,获取方式如下:
public static String getSourceApkPath(Context context, String packageName) { if (TextUtils.isEmpty(packageName)) return null; try { ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(packageName, 0); return appInfo.sourceDir; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return null; }切勿根据自己的逻辑去总结路径,
经过Google和自己测试,发现事情是这样的:
1.当你第一次安装一个APK到手机上时(假设packageName为com.sina.weibo),Android会再/data/app/目录下拷贝一个名为com.sina.weibo-1.apk的文件;
2.重新安装一遍(可能是Google Market升级,也可能是自己手动安装),/data/app/目录下,该文件名就会改为com.sina.weibo-2.apk;
3.再重新安装一遍,文件名就又会变为com.sina.weibo-1.apk,周而复始(1或者2)...
不知道Google为什么做这么一个设计,可能是为了防止App升级的时候被覆盖掉吧。
所以千万不能手动写路径。
路径获取到了之后,
这里所谓的安装就是打开apk 百度有很多答案,我给出一个我测试通过的代码
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.parse(path),
"application/vnd.android.package-archive");
startActivity(intent);
还有第二种方法,直接通过包名打开app
PackageManager packageManager = getPackageManager();
Intent intent =
new
Intent();
intent = packageManager.getLaunchIntentForPackage(
"com.xxx.xxxx"
);
startActivity(intent);