等待用户许可 [英] Wait for user permission

查看:98
本文介绍了等待用户许可的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我构建了一个在启动时对GPS进行采样的应用程序. 您可能知道,在运行时需要Android M及更高版本的权限.

I building an application that sampling GPS on starting. As you probably know, permissions are requested during run-time from Android M and above.

因此,就我而言,我首先要检查是否需要权限,如下所示:

So, in my case I'm starting with checking if permissions are needed, like this:

private void permissionForAndroidM()
{
    if (Build.VERSION.SDK_INT > 22) {
        String[] allPermissionNeeded = {
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.CAMERA,
                Manifest.permission.RECORD_AUDIO};

        List<String> permissionNeeded = new ArrayList<>();
        for (String permission : allPermissionNeeded)
            if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED)
                permissionNeeded.add(permission);
        if (permissionNeeded.size() > 0) {
            requestPermissions(permissionNeeded.toArray(new String[0]), 0);
        }
    }
}

但是,Android继续运行代码并询问GPS数据(=崩溃,因为用户未接受许可请求).

but Android continuing running the code and asking for GPS data ( = crash, because the user didn't accept the permission request).

我找到了许多有关等待用户输入的解决方案(例如使用DialogInterface.OnClickListener

I find many solutions about waiting for user input (like using DialogInterface.OnClickListener, link, but it's cannot implemented in this case, because I'm not creating the dialog).

最下面的问题是:如何等待Android权限对话框中的用户回答?

Bottom line, the question: How can I wait for user answer from the Android permission dialog ?

推荐答案

您可以处理用户响应覆盖方法

You can handle user response overriding method

public void onRequestPermissionsResult(
    int requestCode,
    String[] permissions,
    int[] grantResults
)

从您的活动中获取.

这篇关于等待用户许可的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆