java - 获得权限后如何立即调用函数?
问题描述
启动我的应用程序后,我向用户请求使用此功能的权限:
protected void requestPermission(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(PERMISSIONS, 100);
}
}
我需要在获得用户权限后立即将复选框设置为 true 或 false,但是如果我以这种方式调用函数:
requestPermission();
setCheckboxStates();
功能setCheckboxStates()
在获得所有权限之前激活。我可以通过 using 部分解决这个问题,Thread.sleep()
但它并非一直有效,有时看起来很奇怪。
如何在函数完成向用户询问权限setCheckboxStates()
后立即调用函数?requestPermission()
解决方案
最好的方法你想做的是在你的活动中调用这个方法,名为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找到它
推荐阅读
- php - PHP 下载的文件以 7 个缩进开头
- javascript - 代码在 CSHTML 中有效,但在外部 Javascript 文件中无效
- apache-kafka - Kafka 因动物园管理员超时而关闭
- python - 如何获取包含位置在内的历史推文
- java - 在我的 SavingsAccount 对象上调用函数并打印结果
- html - 我的容器 max-width: 960px 似乎不起作用
- javascript - 检查JS中是否存在数组的正确方法是什么?
- r - 更改图形设置后Rstuido崩溃并且即使重新安装也不会重新打开
- go - go - 如何跨所有连接的tcp客户端访问变量?
- python - 计算两个节点 NetworkX 之间的最长路径