缺少权限的android lint错误警报

时间:2018-12-12 03:21:42

标签: java android android-permissions android-lint android-securityexception

即使我在方法上添加了@RequiresPermission,Android皮棉仍会报告缺少的权限。 代码是:

 @NonNull
    @RequiresPermission(Manifest.permission.READ_CONTACTS)
    public static Map<String, Integer> selectContactVersions(@Nullable Collection<String> contactIds) {
        if (!PermissionUtils.isPermissonGranted(ApplicationKeeper.getApplication(), Manifest.permission.READ_CONTACTS)) {
            return Collections.emptyMap();
        }

错误报告是:

AddressAccesssor.java:41: Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException
  38   @RequiresPermission(Manifest.permission.READ_CONTACTS)
  39   public static Map<String, Integer> selectContactVersions(@Nullable Collection<String> contactIds) {
  40       if (!PermissionUtils.isPermissonGranted(ApplicationKeeper.getApplication(), Manifest.permission.READ_CONTACTS)) {
  41           return Collections.emptyMap();                                                          
  42       }


AddressAccessor.java:126: Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException
 123       return Collections.emptyMap();
 124   }
 125 
 126   Map<String, List<String>> contactIdPhoneListMap = selectPhones(contactIds);                 
 127 
 128   Map<String, AddressbookContact> addressbookContactMap = new HashMap<String, AddressbookContact>();
 129   Cursor cursor = null;

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

  

我在这里错过了什么吗?

好吧,你在那里错过了很多东西。

必须在清单中声明权限,并且需要在运行时中进行请求。仅仅抑制警告是不够的。

显式请求权限以解决问题。

阅读以下文档:
https://developer.android.com/training/permissions/requesting

或者直接使用my library.

相关问题