android - Android WebView navigator.getCurrentPosition 问题
问题描述
尝试在具有代码的 webview 中加载 JS 页面:navigator.getCurrentPosition
a) 对于 android 应用程序的 chrome 浏览器中的相同代码,我看到一个弹出窗口
如果用户允许,从设置中自动打开位置。但是在 webview 中加载 JS 页面时,没有看到打开位置的弹出窗口。
已经给出:
webview.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
// callback.invoke(String origin, boolean allow, boolean remember);
callback.invoke(origin, true, true);
}
}
解决方案
我已经找到了问题的答案,就在这里。
基本上,对于 Google chrome 移动应用程序,位置设置选项通过拦截 onGeolocationPermissionsShowPrompt 显示给用户。
确保位置设置成功时传递的回调是 callback.invoke(origin, true, false); 失败是 callback.invoke(origin, false, false);
https://developer.android.com/training/location/change-location-settings中提到的所有样板都写在回调 onGeolocationPermissionsShowPrompt 本身中。
我注意到这甚至没有被其他浏览器应用程序(如 Firefox)完成。
推荐阅读
- ios - 部署到 App Engine 时找不到 tsconfig.app.json
- anaconda - 使用 conda 构建 caffe2 失败
- python - 查看潜在选择正则表达式之后会发生什么
- javascript - 如何在 React JS + Typescript 应用程序中读取本地 JSON 文件并访问数据?
- vue.js - 笑话:如何模拟 vuex 中使用的 vue-router
- ios - 从 Tableview 更新 Viewcontroller 中的标签文本
- python - pytesseract 在 windows 平台上不起作用
- c# - 使用部分匹配的函数作为代表?
- javascript - 从单个文件中导出 typescript 类和接口
- scala - 如何删除我的列表变量中的空值?