启动应用程序后,我向用户询问该函数的权限:
protected void requestPermission(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(PERMISSIONS, 100);
}
}在获得用户权限后,我需要将复选框设置为true或false,但如果我以这种方式调用函数:
requestPermission();
setCheckboxStates();函数setCheckboxStates()在获得所有权限之前激活。我可以通过使用Thread.sleep()部分地解决这个问题,但是它并不总是工作,有时看起来很奇怪。
在setCheckboxStates()函数询问用户权限之后,如何才能立即调用requestPermission()函数?
发布于 2019-11-25 13:06:36
实现的最佳方法是在名为onRequestPermissionsResult的活动中调用此方法.
此方法在用户权限对话框之后立即响应.
就像你刚才把..。在上面的许可代码中..。这个..。
protected void requestPermission(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(PERMISSIONS, 100);
}
}在这种情况下你发送的号码是100.你刚通过的那个号码,是你在onRequestPermissionsResult中使用的那个.以重新确定用户刚刚拥有的权限.这里是一个示例
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 100:
--CODE HERE--
break;
}
}正如我之前告诉过你的,你传递的号码和你在这里识别权限的号码相同.
要找到这个方法,可以编写它,或者只需要按CTRL + O就可以了。
发布于 2019-11-25 12:47:49
android系统会通知你申请许可的结果。在用户授予(或拒绝)权限后,将调用方法onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)通知您。
本教程很好地解释了处理权限请求的过程。
发布于 2019-11-25 12:54:34
我想函数requestPermission( );和requestPermissions( );是不同的,对吗?和逻辑,如果if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(PERMISSIONS, 100); }成功了,它会调用requestPermissions( );然后setCheckBoxStates( );的值为true,如果不是false..so,它就会像if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(PERMISSIONS, 100); setCheckBoxStates(true);} else {setCheckBoxStates(false);}一样
https://stackoverflow.com/questions/59031883
复制相似问题