【问题标题】:java.lang.SecurityException Not allowed to install apk from another android applicationjava.lang.SecurityException 不允许从另一个 android 应用程序安装 apk
【发布时间】:2015-07-22 09:13:00
【问题描述】:

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

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

关于为什么会出现异常有什么建议吗?

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

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

【问题讨论】:

  • 也许你的应用需要root权限。
  • 另一个问题是我正在使用第三方应用程序安装apk,所以我真的不知道如何找出是否在第三方应用程序的清单文件中设置了该权限.

标签: java android


【解决方案1】:

首先你必须把它添加到清单中

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

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

【讨论】:

  • 另一个问题是我正在使用第三方应用程序安装apk,所以我真的不知道如何找出是否在第三方应用程序的清单文件中设置了该权限.
  • 您可以看到该应用的清单文件,甚至可以使用 7z 之类的基本解压缩应用对其进行更改。但是有太多的解决方法而且不好:)
猜你喜欢
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多