根据是否禁用 Android 权限显示 TextView?

Displaying a TextView depending on whether Android permission is disabled?

我正在尝试显示 TextView,它仅在未启用特定 Android permission(即 WRITE_EXTERNAL_STORAGE)时才显示。这个想法是向用户解释为什么他们需要启用它,以防他们第一次禁用它,然后让他们单击 TextView 再次启动权限请求。以下内容对我不起作用。我怎样才能做到这一点?我的 onCreate() 方法中有这个:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
} else {
    if (NetworkHelper.isOnline(this)) {
        new AppendParseData().execute();
    }
}

TextView checkFilePermission = (TextView) findViewById(R.id.checkFilePermission);

if (!checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
    checkFilePermission.setVisibility(View.VISIBLE);
}
Use this code:-


int hasWriteContactsPermission = ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE);

if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this,new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
            return;
    }
    else{
        //Permission already granted show textview here
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case 1:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // Permission Granted                   
                     Toast.makeText(MainActivity.this, " PERMISSION_GRANTED", Toast.LENGTH_SHORT)
                     .show();
                } else {
                    // Permission Denied
                    Toast.makeText(MainActivity.this, " Denied", Toast.LENGTH_SHORT)
                            .show();
                }
                break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

申请权限的时候试试这个(我已经用了READ_CONTACTS权限,你可以用WRITE_EXTERNAL_STORAGE代替)

if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE)
                    != PackageManager.PERMISSION_GRANTED) {
                requestContactsPermissions1();
            } else {
                setTextVisablity(false);
                checkSimCard();
            }

onRequestPermissionsResult

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case REQUEST_CODE_ASK_PERMISSIONS:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // Permission Granted
                    readContacts();
                    setTextVisablity(false);
                } else {
                    // Permission Denied
                    setTextVisablity(true);
                    Toast.makeText(MainActivity.this, "READ_CONTACTS Denied", Toast.LENGTH_SHORT)
                            .show();
                }
                break;
            default:
                super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        }
    }

到底setTextVisablity方法

public void setTextVisablity(boolean isShow) {
        if (isShow) {
            tv.setVisibility(View.VISIBLE);
        } else {
            tv.setVisibility(View.GONE);
        }
    }