onGeolocationPermissionsShowPrompt webview使用内置浏览器定位的权限
程序员文章站
2024-03-16 23:31:40
...
关于onGeolocationPermissionsShowPrompt地理位置权限如何打开问题,有以下步骤解决:
①在AndroidManifest.xml里面声明权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
②设置webview.setting
WebSettings settings = webview.getSettings();
settings.setGeolocationEnabled(true);//允许地理位置可用
③继承WebChromeClient类并且重写其onGeolocationPermissionsShowPrompt函数
class MyChromeViewClient extends WebChromeClient {
public void onGeolocationPermissionsShowPrompt(final String origin, final android.webkit.GeolocationPermissions.Callback callback) {
final boolean remember = true;
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("位置信息");
builder.setMessage(origin + "允许获取您的地理位置信息吗?").setCancelable(true).setPositiveButton("允许",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int id) {
callback.invoke(origin, true, remember);
}
})
.setNegativeButton("不允许",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int id) {
callback.invoke(origin, false, remember);
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
并且为其设置
webview.setWebChromeClient(new MyChromeViewClient());
效果图如下:
至此webview就能使用内置浏览器的定位了。
上一篇: Java 封装、继承、多态
下一篇: mysql 8.0 卸载并安装