Api 23权限编译时检查

3

嘿,我正在更新到Android API 23,但是我很难确保所有需要用户权限的位置都已经得到了适当的处理。除了手动遍历应用程序并尝试所有分支之外,是否有一种方法可以找到所有需要用户授予权限的方法?


1
如果从清单(manifest)中移除权限,最新的 Lint 是否会对此发出警告?只是一个想法 - Blundell
2个回答

0
你可以使用这个插件来实现你想要的功能: AndroidPermissionsUsage 但是,正如他在自述文件中提到的那样,这只是一个实验,它并不能完美地实现它应该做的事情。 因此,我建议你使用这个易于使用的库来升级你的应用程序:Let 只需添加:
@AskPermission({
        Manifest.permission.READ_CONTACTS,
        Manifest.permission.CALL_PHONE,
        Manifest.permission.CAMERA
})
private void skipTutorial() {
// permissions needed for best experience are granted; let' go to the app's home screen
startActivity(new Intent(this, HomeActivity.class));
}

或者使用这个库:permiso

并且使用以下代码:

Permiso.getInstance().requestPermissions(new Permiso.IOnPermissionResult() {
@Override
public void onPermissionResult(Permiso.ResultSet resultSet) {
    if (resultSet.isPermissionGranted(Manifest.permission.READ_CONTACTS)) {
        // Contact permission granted!
    }
    if (resultSet.isPermissionGranted(Manifest.permission.READ_CALENDAR)) {
        // Calendar permission granted!
    }
}

@Override
public void onRationaleRequested(Permiso.IOnRationaleProvided callback, String... permissions) {
    Permiso.getInstance().showRationaleInDialog("Title", "Message", null, callback);
}
}, Manifest.permission.READ_CONTACTS, Manifest.permission.READ_CALENDAR);

他并不是想要一种获取权限的方法,他是在询问是否有一种方法可以定位代码库中所有需要他请求权限的地方。 - Rein S

0

危险权限列表中匹配的清单中获取所有权限。

enter image description here

然后对于每个权限,进入编辑 -> 在路径中查找 -> 并输入权限组的关键字,在我的例子中我使用的是位置。

enter image description here

enter image description here

然后在您的结果面板中找到最有可能使用此权限的第一个出现,例如MainActivity:

enter image description here


我的项目在许多地方使用了关键词“位置”,普通搜索无法帮助我。我刚刚关闭了权限,全面检查了整个应用程序,以查看发生了什么崩溃。 - user1634451

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接