【问题标题】:Android runtime permission not workingAndroid运行时权限不起作用
【发布时间】:2018-12-27 18:25:26
【问题描述】:

我已经从活动的 onCreate 方法中调用了权限函数,它应该相应地将布尔值设置为 true 和 false。但是授予权限后,布尔变量不会返回 true。从 oncreate 方法调用 verifyStoragePermissions 有问题吗?请提出适当的方法。谢谢。

注意:我已经在清单文件上添加了权限。

Boolean PermissionGranted = false;
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE
};
public  void verifyStoragePermissions(Activity activity) {
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

    if (permission != PackageManager.PERMISSION_GRANTED) {
        // We don't have permission so prompt the user
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
        );
    }else{
        PermissionGranted = true;
    }
}

@Override
public void onRequestPermissionsResult(
        int requestCode,
        String permissions[],
        int[] grantResults) {
    super.onRequestPermissionsResult(requestCode,permissions,grantResults);
    if (grantResults.length > 0
            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        PermissionGranted = true;
        System.out.println("P granted");
    } else {
        PermissionGranted = false;
        System.out.println("P not granted");
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    verifyStoragePermissions(this);
    if(!PermissionGranted) {
    ...
    }else{
    ...
    }
    .....
}

【问题讨论】:

  • 您的日志是否按原样打印?
  • 权限请求是异步的。不能直接假设调用verifyStoragePermissions之后请求就完成了。
  • @Michael 感谢您的评论。那么有什么方法可以让它工作呢?
  • @maheryhaja:日志显示“P 已授予”,但在 onCreate PermissionGranted 变量中仍设置为 false。
  • 通过重组您的代码,以便在您收到onRequestPermissionsResult 回调时发生任何需要您请求的权限的事情。

标签: android android-activity permissions


【解决方案1】:

你需要添加

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

到您的 AndroidManifest.xml 文件。

【讨论】:

    【解决方案2】:

    根据你放在这里的代码,你的问题应该是AndroidManifest中缺少权限。

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

    当我们处理权限时,别忘了把它们放在 AndroidManifest 中。

    有关权限的更多信息,请查看此link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      相关资源
      最近更新 更多