在我的应用程序的开发测试过程中,我遇到了一个奇怪的问题,即完全相同的代码库的新版本(Build 2.0)突然默认权限(运营商互联网、gps)为“提示”而不是“允许安装”。
详细信息 - 相同的代码库
因此存在两个版本,两者都具有相同的代码库。 Build 1.0 已于上周制作/签署。昨天制作/签署了 Build 2.0。如果我安装 Build 1.0,初始权限没有问题(全部允许)。但在安装 Build 2.0 时,相同的权限(运营商互联网、GPS)被设置为提示。
问题
该应用程序确实会发出 GPS 和数据请求,并且我确实了解某些手机配置需要设置权限,但为什么以前不需要权限的构建(构建 1.0)突然需要它们(构建 2.0)?
我认为这可能与我的项目/build设置有关,但我不确定是什么。有什么建议吗?
最佳答案
是否有可能您在 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”程序提供了一个很好的示例,用于查询应用程序权限并请求应用程序本身更改应用程序权限。
关于java - 奇怪的黑莓问题 - 新版本突然请求访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1045390/