等到Android

时间:2016-09-30 14:23:09

标签: android

我已经看到了问题 Can you request permissions synchronously in Android Marshmallow (API 23)'s runtime permissions model? 。答案是否定的。

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

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;
    }
}

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

1 个答案:

答案 0 :(得分:0)

嗯,你想要实现的目标是不可能的,但有几种方法可以解决这个问题:

  1. 仅在授予permission时触发您要调用的方法。
  2. 如果您想让用户仅使用您的应用,因为特定的permission非常重要,如果没有它,您的应用就不会function,请使用受过良好教育的屏幕告诉用户为什么你想在一个介绍屏幕中使用这个permission
  3. 我为这种情况创建了一个库,其中library为您简化了Permissions,它也可以用作具有简介的单独Activity的展位到你的permission。你可以在Github中查看PermissionHelper Github