首页 > 解决方案 > 允许后立即调用方法

问题描述

我有这样的代码

public void onClick(View v) {

            String fileName = edtFileName.getText().toString() ;
            String content = edtContent.getText().toString();

            if (canReadAndWrite())
                createFile(fileName,content);
        }

当用户单击按钮时,应用程序会向他/她请求许可,但 canReadAndWrite() 方法第一次返回 false 。我该如何解决这个问题?我可以使用 onRequestPermissionsResult 但这似乎不合理,因为我不知道用户单击按钮的位置(如果我们有很多方法和按钮),文件名和内容等变量也是本地的,我必须将另一个变量声明为 global 。这是我的权限功能代码

if (Build.VERSION.SDK_INT <=23){
        return true;
    }else {
        if (ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED){
            return true;
        }else {
            ActivityCompat.requestPermissions(this
            ,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1234);
            return false;
        }
    }

标签: android

解决方案


@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1234:
           if(grantResults[0] == == PackageManager.PERMISSION_GRANTED){
            //Do what ever you want to do...
            }
           break;
    }
}

推荐阅读