启动我的应用程序后,我向用户请求此功能的权限:
protected void requestPermission(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(PERMISSIONS, 100);
}
}
我需要在获得用户权限后立即将复选框设置为 true 或 false,但是如果我以这种方式调用函数:
requestPermission();
setCheckboxStates();
函数setCheckboxStates()
在获得所有权限之前激活。我可以使用 Thread.sleep() 部分解决这个问题,但它并不总是有效,有时看起来很奇怪。
如何在 requestPermission()
函数完成请求用户权限后立即调用函数 setCheckboxStates()
?
最佳答案
执行您想要执行的操作的最佳方法是在名为 onRequestPermissionsResult
... 的 Activity 中调用此方法...
此方法在用户权限对话框后立即响应...
正如您刚刚放入...在上面的权限代码中...这个...
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 找到它
关于java - 获得权限后如何立即调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59031883/