0

我有一台三星 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 );
        }
    }

您不能在片段中请求权限吗?这必须在活动中完成吗?

4

2 回答 2

1

ACCESS_NETWORK_STATEACCESS_WIFI_STATE并且CHANGE_WIFI_STATE不是危险的权限,不需要在运行时请求。您需要实际请求Manifest.permission.ACCESS_COARSE_LOCATION.

请注意,支持 v4 片段包含requestPermissions()方法,这是您获取片段的onRequestPermissionsResult()回调的唯一方法(使用该ActivityCompat方法只会将权限结果发送到 Activity)。

requestPermissions(
    new String[] { Manifest.permission.ACCESS_COARSE_LOCATION },
    PERMISSIONS_REQUEST_CODE_ACCESS_COARSE_LOCATION );
于 2016-11-01T17:03:15.093 回答
0

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

requestPermissions(permissions, PERMISSIONS_CODE);

如果您想从片段内部处理用户选择,请尝试以下代码

FragmentCompat.requestPermissions(permissions,PERMISSIONS_CODE);
于 2016-11-01T17:02:20.117 回答