【问题标题】:Permission Requests causes infinite loop in OnResume权限请求导致 OnResume 中的无限循环
【发布时间】:2017-04-28 13:02:49
【问题描述】:

在 API >= 23 中,我们需要在运行时请求用户许可。但由于某种原因,权限导致 onResume 被无限调用。这是什么原因造成的?

  @Override
protected void onResume() {
    super.onResume();

     ActivityCompat.requestPermissions(MainActivity.this,
     new String[]{Manifest.permission.ANYPERMISSION},1);       

}

 @Override
public void onRequestPermissionsResult(int requestCode,
         String permissions[], int[] grantResults) {
     }  

【问题讨论】:

  • 你最好在 onCreate() 中请求权限。

标签: java android android-permissions


【解决方案1】:

当您显示权限问题对话框时,Acitvity 转到onPause,当对话框隐藏时,它转到onResume。您必须更改请求许可的位置。

【讨论】:

  • 啊,不知道对话让它转到onPause
  • 如果我帮助了你,请检查是否已回答;)
  • 我会在定时器允许的时候尽快。感谢您的信息。
【解决方案2】:

一小段代码用于完成先前的响应:)

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (Build.VERSION.SDK_INT >= 23)
        ensurePermissions(
                Manifest.permission.GET_ACCOUNTS,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        );
}

和:

@TargetApi(23)
private void ensurePermissions(String... permissions) {
    boolean request = false;
    for (String permission : permissions)
        if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
            request = true;
            break;
        }

    if (request) {
        requestPermissions(permissions, REQUEST_CODE_PERMISSION);
    }
}

【讨论】:

  • 签入onCreate是错误的;首先 - 活动可能根本没有显示(onstart,onresume 从未调用过);第二 - 如果用户在 oncreate 中授予权限然后退出应用程序然后 chenges 权限然后返回到应用程序怎么办?
【解决方案3】:

首先,您的应用需要在请求运行时权限之前检查您是否已获得特定权限。

 if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
            android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    } else {
        ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_CODE);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2011-04-06
    • 2020-08-27
    • 2021-05-07
    • 2012-08-24
    • 2020-11-16
    相关资源
    最近更新 更多