Android Marshmallow请求片段中的权限运行时

时间:2016-11-01 16:50:25

标签: java android android-permissions runtime-permissions

我有三星Galaxy S7设备,我正在尝试访问wifi信息。我正在尝试从片段中请求运行时权限,但弹出窗口不会显示。

以下是我正在尝试做的代码

private static final int PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION = 1001;
private void requestPermissions() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
                getActivity().checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.ACCESS_NETWORK_STATE,
                                            Manifest.permission.ACCESS_WIFI_STATE,
                                            Manifest.permission.CHANGE_WIFI_STATE},
                                            PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION );
        }
    }

您是否可以请求片段中的权限?这必须在活动中完成吗?

2 个答案:

答案 0 :(得分:1)

ACCESS_NETWORK_STATEACCESS_WIFI_STATECHANGE_WIFI_STATE不是危险权限,不需要在运行时请求。您需要实际申请Manifest.permission.ACCESS_COARSE_LOCATION

请注意,支持v4片段包含requestPermissions()方法,这是您获得片段onRequestPermissionsResult()回调的唯一方法(使用ActivityCompat方法只会发送权限结果参加活动。)

requestPermissions(
    new String[] { Manifest.permission.ACCESS_COARSE_LOCATION },
    PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION );

答案 1 :(得分:0)

是的,您可以从内部片段尝试

请求权限
requestPermissions(permissions, PERMISSIONS_CODE);

如果要处理内部片段

中的用户选择,请尝试以下代码
FragmentCompat.requestPermissions(permissions,PERMISSIONS_CODE);