如何打开一个app

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qqyanjiang/article/details/49303537

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);



展开阅读全文