【发布时间】: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