【问题标题】:Install APK from Internal Memory从内存安装 APK
【发布时间】:2014-03-09 09:18:39
【问题描述】:

我知道这个问题以前被问过很多次,但没有一个解决方案能解决我的问题。 我在内存中保存了一个 APK:“/data/data/[package-name]/files/0.apk” 我使用以下方法保存了它:

openFileOutput("0.apk", Context.MODE_WORLD_READABLE);

我想使用以下代码安装它,但我收到“解析包时出现问题”

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(context.getFilesDir(), "0.apk")), "application/vnd.android.package-archive");
context.startActivity(intent);

并且 LogCat 说,“解析清单时出现解析错误。停止安装”。请帮我解决这个问题。

编辑: 我决定为我的文件使用外部存储。当我将文件复制到 sd 卡并尝试通过上述代码安装时,一切正常。但是当我下载 apk 并将其存储在 sd 卡上时,同样的“解析错误...”再次出现。起初,我认为这是因为 apk 损坏,但当我尝试在我的应用之外安装它时,它成功了。

【问题讨论】:

    标签: android android-intent apk android-install-apk


    【解决方案1】:

    当您尝试安装已通过其他方式安装的应用程序时,通常会出现“解析清单时出现解析错误。停止安装”错误。例如,如果您有一个与您通过 PlayStore 安装的包名称相同的应用程序,而现在您正尝试以 adb 形式安装,反之亦然。

    另一个可能会减少麻烦的选项是将 apk 复制到用户 external storage 文件夹,然后尝试打开它。

    【讨论】:

    • 设备上未安装该应用程序。我不想使用外部存储,因为可能设备没有!
    • 每台 Android 兼容设备都支持共享“外部存储”,您可以使用它来保存文件。这可以是可移动存储介质(例如 SD 卡)或内部(不可移动)存储。保存到外部存储的文件是世界可读的,并且可以由用户在启用 USB 大容量存储以传输计算机上的文件时进行修改。 developer.android.com/guide/topics/data/…
    • 我明白了。你说设备不可能没有外部存储?
    • @Juan-devtopia.coop - 这是一个稍微错误的结论 - 在外部存储可移动的设备上,它可能会被删除。在实现 USB 大容量存储模式的设备上,它也可能在安装到 PC 时不可用
    • @Mbt925 - 尝试使用文件管理器应用程序单击并安装您移动到外部存储的副本 - 可能问题出在 apk,而不是您的程序。
    【解决方案2】:

    可能是权限问题。 请改为将 apk 文件复制到外部存储。

    【讨论】:

    • 嗨。我正面临这个问题。如果我将 apk 移动到外部存储,它工作正常,但出于安全原因(客户要求)我不想这样做。还有其他方法可以使用内部存储吗?
    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2011-01-20
    • 2017-12-30
    • 2021-11-09
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    相关资源
    最近更新 更多