有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java安装数据目录中存在的apk

我正在尝试安装存在于内部/外部存储器中的apk文件。 这是我的代码:

final String fileuri = "file://" + absolutePath;
Log.v("FILE_BROWSER", "File to be installed: " + Uri.parse(fileuri).getPath());
final Intent promptInstall = new Intent(Intent.ACTION_VIEW);
promptInstall.setDataAndType(Uri.parse(fileuri), "application/vnd.安卓.package-archive");
promptInstall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(promptInstall);

如果apk文件存在于外部存储器中,则该文件安装成功。例如/mnt/sdcard/MyApp.apk

但是,如果内部存储器(例如/data/data/com.myapp/files/myapp.apk)上存在apk文件,则安装失败。错误消息是:Parse Error: There is a problem parsing the package

一种解决方案是将文件复制到SD卡,然后安装它。但是,在SD卡不可用的情况下,此技巧将不起作用

对这家伙有什么帮助吗?如果SD卡不可用,如何在内部存储目录上安装apk


共 (1) 个答案

  1. # 1 楼答案

    为了你的这个。apk文件必须具有Context.MODE_WORLD_READABLE权限

    我这样做是为了写作。应用程序内部存储器中的apk文件

    String outFileName = path+"/<Application_Name>.apk";
    OutputStream myOutput = openFileOutput("<Application_Name>.apk", Context.MODE_WORLD_READABLE);
    

    然后安装它

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(new File(path+"/<Application_Name>.apk")), "application/vnd.android.package-archive");
    startActivity(intent);
    

    这里的路径是path = getFilesDir().getAbsolutePath();

    这对我来说很好