0

在我的应用程序的开发测试期间,我遇到了一个奇怪的问题,即完全相同的代码库的新版本(Build 2.0)突然默认权限(运营商互联网,gps)是提示而不是安装时允许。

详细信息——相同的代码库
因此存在两个构建,它们都具有相同的代码库。Build 1.0 是上周制作/签署的。Build 2.0 是昨天制作/签署的。如果我安装 Build 1.0,初始权限没有问题(全部允许)。但是在安装 Build 2.0 时,相同的权限(运营商互联网、gps)设置为提示。

问题
该应用确实会发出 gps 和数据请求,而且我知道某些手机配置需要设置权限,但为什么以前不需要权限的构建(构建 1.0)突然需要它们(构建 2.0)?

我认为这可能与我的项目/构建设置有关,但我不确定是什么。有什么建议么?

4

1 回答 1

3

您是否有可能在 1.0 和 2.0 之间的设备上做了一些会导致这种情况的事情,例如打开防火墙?

据我所知,您无法在构建、下载或安装时执行任何操作来设置或查询应用程序的权限。您需要等到它实际运行后,才能控制查询或请求更改应用程序权限。

您可能想尝试将以下代码片段放在应用程序的初始化中,以查看实际设置的设置:

ApplicationPermissionsManager apm = ApplicationPermissionsManager.getInstance();
ApplicationPermissions permissions = apm.getApplicationPermissions();
int[] keys = permissions.getPermissionKeys();
for (int i = 0; i < keys.length; i++) {
    int key = keys[i];
    System.out.println("APM: " + key + " = " +
        permissionToString(permissions.getPermission(key)));
}

和:

public String permissionToString(int value) {
    switch(value) {
        case ApplicationPermissions.VALUE_ALLOW:
            return "ALLOW";
        case ApplicationPermissions.VALUE_PROMPT:
            return "PROMPT";
        case ApplicationPermissions.VALUE_DENY:
            return "DENY";
        case -1:
            return "NOT_SET";
        default:
            return Integer.toString(value);
    }
}

JDE 示例目录中的“applicationpermissionsdemo”程序有一个很好的示例,可以查询应用程序权限并从应用程序本身请求更改应用程序权限。

于 2009-06-27T05:42:41.937 回答