相关疑难解决方法(0)

使用三星Galaxy S8 INSTALL_FAILED_DUPLICATE_PERMISSION

我正试图从Android Studio首次在我的新款三星Galaxy S8上安装我的应用程序.当我这样做时,我收到以下错误消息:

安装失败,显示消息无法完成会话:INSTALL_FAILED_DUPLICATE_PERMISSION:包bbct.android尝试重新声明com.samsung.android.bixby.agent已拥有的bbct.android.lite.permission.READ权限.

为什么Bixby拥有我的许可?更重要的是我该如何解决这个问题?

android samsung-mobile android-studio samsung-galaxy

32
推荐指数
2
解决办法
1841
查看次数

以编程方式重新安装应用程序apk而不下载

由于这种恼人的Android限制,我需要用户重新安装我的应用程序,以便其他应用程序检测到清单权限.

这对用户来说已经是令人沮丧的了,但另外,我看不到从/ data/app中存储的apk重新安装我的应用程序的方法,因此我必须将相同的版本下载到存储卡才能解雇通常的安装意图.

我急切地等着有人告诉我,我错过了一些明显的东西!我画了一个空白......

提前致谢.

如果您希望解决问题,请为问题加注星标!干杯.


编辑:考虑到@hackbod的注释,您可以使用以下代码启动安装对话框.

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(this.getApplicationInfo().sourceDir)),
"application/vnd.android.package-archive");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在我的Jelly Bean设备上,它提供了两个选项:包安装程序验证并安装.我不知道后者是否会处理以下问题:

  • 以这种方式安装您的应用可能会从Play商店中删除它的所有权

我的申请是免费的,所以我无法测试以下的付费问题:

  • 但请注意,如果您的应用程序是向前锁定的(由于应用程序加密,这对于所有以JB开头的付费应用程序是不可避免的),那么这将无效,因为其他人无法读取您的应用程序可执行文件

虽然hackbod完成了"其他人可读",这表明如果您通过自己的代码执行此操作,对于您自己的应用程序,它是可读的吗?如果你可以测试一下,请纠正我,我错了.

java android

12
推荐指数
1
解决办法
1742
查看次数

以编程方式更改Manifest - Android自定义权限

当前的Android权限系统会导致以下问题:

App A定义了以下的自定义权限:

com.package.permission.READ_APP_DATA
Run Code Online (Sandbox Code Playgroud)

当安装应用程序B声明自定义权限时,它将被授予.

但是,如果应用B之后安装应用A,则该权限不会授予应用B.

虽然这可能不常见,但由于应用程序B经常是应用程序A的插件,它当然可以发生并且适用于我的应用程序.

android.permission.ACCESS_SUPERUSER如果用户决定切换SuperUser应用程序,SuperUser应用程序同意引入全局自定义权限可能是一个大问题.

为了处理这个问题,我打算在我的应用程序中使用以下代码来获取我即将开始声明的自定义权限:

checkPermissions(this, getCallingActivity().getPackageName()); // get the package name from the sender first

private boolean checkPermissions(Context context, String callingPackage) {

    final List<PackageInfo> apps = context.getPackageManager().getInstalledPackages(PackageManager.GET_PERMISSIONS);

    for (PackageInfo pi : apps) {

        if (pi.packageName.equals(callingPackage)) {

            String[] permissions = pi.requestedPermissions;

            if (permissions != null) {
                for (String permission : permissions) {
                    if (permission.equals("com.package.permission.READ_APP_DATA")) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
Run Code Online (Sandbox Code Playgroud)

根据这个问题的标题:这种方法"安全"吗?或者是否有一种方法/ root-hack,应用程序的清单在安装后可以更改,并且以编程方式"添加"到应用程序B的权限?

permissions android android-manifest

11
推荐指数
1
解决办法
5798
查看次数