我使用的android SDK目标版本是22为READ_CONTACTS

时间:2018-02-10 06:31:39

标签: android android-studio android-fragments sdk android-permissions

我用于 阅读联系人 的权限,以便在清单中分配权限。我的问题是,我不是将sdk版本增加到23以向用户显示权限对话框(默认由android给出)并获取权限并通过它。在android sdk版本22中。

  • minSdkVersion = 16 targetSdkVersion = 22 compileSdkVersion = 27

    I am using this code right now.
    
      if (Build.VERSION.SDK_INT >= 23) {
                if (checkPermission()) {
                    Log.e("permission", "Permission already granted.");
                } else {
                    requestPermission();
                }
            }
    
    private boolean checkPermission() {
            int result = ContextCompat.checkSelfPermission(fragmentContext, android.Manifest.permission.READ_CONTACTS);
            if (result == PackageManager.PERMISSION_GRANTED) {
                return true;
            } else {
    
                return false;
            }
        }
    
        private void requestPermission() {
            ActivityCompat.requestPermissions((Activity) fragmentContext, new String[]{android.Manifest.permission.READ_CONTACTS}, REQUEST_READ_CONTACTS);
        }
    
    
     @Override
        public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
            switch (requestCode) {
                case REQUEST_READ_CONTACTS:
                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    
                        Toast.makeText(fragmentContext,
                                "Permission accepted", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(fragmentContext,
                                "Permission denied", Toast.LENGTH_LONG).show();
    
                    }
                    break;
            }
        }
    

1 个答案:

答案 0 :(得分:0)

  

在API 22及以下版本中,如果在中指定,则已授予权限   清单。

对于API 23+ ContextCompat#checkSelfPermission可能有用。它降低了#34;优雅地使用早期的API,如果它出现在清单中,它将告诉您授予的权限。在API 23及更高版本上,它实际上会检查它是否被授予。