java.lang.SecurityException 不允许从另一个 Android 应用程序安装 apk

标签 java android

我正在开发一个 Android 应用程序,我试图从某个位置(网站)下载一个 apk,将其存储在 SD 卡上,然后我想将其安装在我的设备上。

但是,我在尝试安装 apk 时遇到以下错误: java.lang.SecurityException:不允许调用者安装 APK

关于异常出现的原因有什么建议吗?

为了安装,我执行以下操作:

public static void installApk(ContentResolver contentResolver) {
    final ContentValues values = new ContentValues();
    values.put(APK_KEY, APK_NAME);
    values.put(PACKAGE_KEY, PACKAGE_NAME);
    values.put(APKS_DIR_PATH_KEY, Environment.getExternalStorageDirectory() + APKS_DIR_PATH + APK_NAME);
    try {
        contentResolver.insert(INSTALL_SINGLE_URI, values);
    } catch (SecurityException e) {
        //permission not granted
        Log.e(Utils.class.getSimpleName(), e.toString());
    }   }

最佳答案

首先您必须将其添加到 list 中

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

但现在困难的时刻来了。如果您想从应用程序安装软件包,则必须将应用程序安装到/system/app。仅在这种情况下 INSTALL_PACKAGES 权限才有效。其他简单的方法,只需调用 apk 的 url,让系统默认的包管理器来处理该工作:)

关于java.lang.SecurityException 不允许从另一个 Android 应用程序安装 apk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31558815/

相关文章:

java - 如何计算服务帐户的 OAuth 签名?

android - 在 Android 应用程序中推送通知

java - 如何让 Log4j 使用标准输出?

java - 在JavaFX中,类Pane的实例是一个单独的节点吗?

java - 如何在 aar 包中的 android 库模块中包含 google-play-services 库作为可选

java - 逐帧动画未运行

android - 如何修复模拟器 : qemu-system-x86_64: warning: host doesn't support requested feature: CPUID. 80000001H :ECX. abm [位 5]

android - 在 onloadfinished 中打开对话框 fragment 时出现 java.lang.IllegalStateException

java - 字符串子字符串或拆分器 - 对从命令行参数插入的数据进行排序

java - 缺少 jar 会影响 Fortify 扫描结果吗?