Android M:系统权限与WebView位置权限

Android M:系统权限与WebView位置权限,第1张

概述我有一个WebView,加载的某些页面需要GeolocationPermissions的权限.为此,我重写了onGeolocationPermissionsShowPrompt().好.另外,我的应用使用新的权限模型定位SDK23(AndroidM).因此,我需要检查用户是否授予了权限ACCESS_FINE_LOCATION,如果没有,则显示一个询问该权限的对话框.

我有一个WebVIEw,加载的某些页面需要GeolocationPermissions的权限.为此,我重写了onGeolocationPermissionsShowPrompt().好.

另外,我的应用使用新的权限模型定位SDK 23(Android M).因此,我需要检查用户是否授予了权限ACCESS_FINE_LOCATION,如果没有,则显示一个询问该权限的对话框.

如何仅对需要GeolocationPermissions的页面显示该对话框?

不调用回调onPermissionRequest(PermissionRequest request).

AndroIDManifest:
    

WebVIEw回调

@OverrIDepublic voID onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {    callback.invoke(origin, true, true);    super.onGeolocationPermissionsShowPrompt(origin, callback);}@OverrIDepublic voID onPermissionRequest(PermissionRequest request) {    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){        requestLocationPermission();    else {        super.onPermissionRequest(request);    }

显示对话框权限

private voID requestLocationPermission() {    if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)) {      new ADPDialogFragment(getActivity()) {        @OverrIDe        public String getTitre() {            return getString(R.string.mob_he_configuration_dialogue_message_titre);        }        @OverrIDe        public String getMessage() {            return getString(R.string.permission_location_rationale);        }        @OverrIDe        public voID doPositiveClick() {            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);        }    }.show(getFragmentManager(), TAG);} else {    ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);}

权限回调

@OverrIDepublic voID onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {    if (requestCode == REQUEST_LOCATION) {        // BEGIN_INCLUDE(permission_result)        // Received permission result for camera permission.        Log.i(TAG, "Received response for Camera permission request.");        // Check if the only required permission has been granted        if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {            // Camera permission has been granted, prevIEw can be displayed        } else {            Toast.makeText(getActivity(), getString(R.string.permissions_not_granted), Toast.LENGTH_SHORT).show();        }        // END_INCLUDE(permission_result)    } else {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);    }}

谢谢你的帮助!

解决方法:

您可以在调用onGeolocationPermissionsShowPrompt时请求用户的许可:

@OverrIDepublic voID onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {    if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {        mCallback = callback;        mOrigin   = origin;        requestLocationPermission();    } else {        callback.invoke(origin, true, true);    }}

并且当用户选择授予您权限时:

@OverrIDepublic voID onRequestPermissionsResult(int requestCode,                                       @NonNull String[] permissions,                                       @NonNull int[] grantResults){    switch (requestCode) {    case REQUEST_LOCATION:        if (mCallback != null && mOrigin != null)            mCallback.invoke(mOrigin,                             grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED,                             false);        mCallback = null;        mOrigin   = null;        break;    default:        super.onRequestPermissionsResult(requestCode, permissions,                                         grantResults);    }}
总结

以上是内存溢出为你收集整理的Android M:系统权限与WebView位置权限全部内容,希望文章能够帮你解决Android M:系统权限与WebView位置权限所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存