等待,直到Android中收到Permisson请求结果

等待,直到Android中收到Permisson请求结果,android,Android,我见过这么多问题。答案是否定的 因此,我添加了如下代码(简化版): 但是,我不确定我的方法是否好、安全和高效。好吧,你想要实现的目标根本不可能,但是有几种方法可以克服这一点: 仅在授予权限时触发要调用的方法 如果您想让用户只使用您的应用程序,因为特定的权限非常重要,没有它,您的应用程序将无法运行,那么请使用一个经过培训的屏幕,告诉用户您为什么要以介绍屏幕的方式使用此权限 我已经为这种情况创建了一个库,库为您简化了权限,它还可以用作一个独立的活动,其中包含对您的权限的介绍。您可以在Github中查

我见过这么多问题。答案是否定的

因此,我添加了如下代码(简化版):


但是,我不确定我的方法是否好、安全和高效。

好吧,你想要实现的目标根本不可能,但是有几种方法可以克服这一点:

  • 仅在授予
    权限时触发要调用的方法
  • 如果您想让用户只使用您的应用程序,因为特定的
    权限
    非常重要,没有它,您的应用程序将无法
    运行
    ,那么请使用一个经过培训的屏幕,告诉用户您为什么要以介绍屏幕的方式使用此
    权限

  • 我已经为这种情况创建了一个库,
    为您简化了
    权限
    ,它还可以用作一个独立的
    活动
    ,其中包含对您的
    权限的介绍。您可以在Github中查看它,而(!hasGotPermissionRequestResult){}
    中的
    onCreate
    。。。基本上它既不好也不安全也不高效。。。根据经验法则:永远不要使用繁忙的等待循环。尤其是在UI线程上
    public class MyActivity ... {
        private boolean hasGotPermissionRequestResult = false;
    
        @Override
        public void onCreate(...) {
            if (ContextCompat.checkSelfPermission(...) == PackageManager.PERMISSION_DENIED) {
                ActivityCompat.requestPermission(...);
                while (!hasGotPermissionRequestResult) {}
            }
        }
    
        @Override
        public void onRequestPermissionResult(...) {
            // whether granted or not
            hasGotPermissionRequestResult = true;
        }
    }