无法在 webview 上加载地理位置

2023-12-01

我想将地理位置加载到 android 2.1 上的 webview 中。地理定位在我的浏览器上运行良好,但在 webview 上却失败了。

public class WebPageLoader extends Activity implements GeolocationPermissions.Callback{

    WebView webview;
    String geoWebsiteURL = "http://hngu.naf.cs.hut.fi/current_location.html";
    public WebPageLoader() {
    }

    /**
     * Called with the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        webview = (WebView) findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webview.getSettings().setGeolocationEnabled(true);  //seems like if i set this, the webview should prompt when I call navigator.geolocation.getCurrentPosition
        GeoClient geo = new GeoClient();
        webview.setWebChromeClient(geo);        
        String origin = ""; //how to get origin in correct format?
        geo.onGeolocationPermissionsShowPrompt(origin, this);  //obviously not how this is meant to be used but expected usage not documented
        webview.loadUrl(geoWebsiteURL);        

    }

    public void invoke(String origin, boolean allow, boolean remember) {

    }

    final class GeoClient extends WebChromeClient {

    @Override
    public void onGeolocationPermissionsShowPrompt(String origin,
    Callback callback) {
    // TODO Auto-generated method stub
    super.onGeolocationPermissionsShowPrompt(origin, callback);
    callback.invoke(origin, true, false);
    }

    }

    }

我的清单.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="net.Webview_Android"
      android:versionCode="1"
      android:versionName="1.0">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION" />
    <uses-library
        android:name="com.google.android.maps" />  
    <uses-permission android:name="android.permission.ACCESS_GPS" />
    <uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
    <uses-sdk android:minSdkVersion="7" /> 
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".WebPageLoader"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

当我运行该应用程序时。它显示带有标记的谷歌地图。但是,即使我的 html 文件运行良好,它也无法找到当前位置。请帮我。太感谢了。


@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  webview = (WebView) findViewById(R.id.webview);
  webview.getSettings().setJavaScriptEnabled(true);
  webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
  webview.getSettings().setGeolocationEnabled(true);  


  webView.setWebChromeClient(new WebChromeClient() {
    public void onGeolocationPermissionsShowPrompt(
      String origin, 
      GeolocationPermissions.Callback callback) {
        callback.invoke(origin, true, false);
      }
  });
  webview.loadUrl(geoWebsiteURL);                    
}

对我有用。

我使用权限:

<uses-permission android:name="android.permission.INTERNET" />
<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_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

请注意,在 Android 模拟器上,您必须使用以下命令设置位置geo fix.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 webview 上加载地理位置 的相关文章

随机推荐

  • getDrawable(int id) 已弃用。如何设置图像?

    有一个问题 getDrawable 在 API 22 中已弃用 那么 如果我使用最小 API 16 制作应用程序 如何设置图像 我看到我可以使用 getDrawable int id theme 但这是在 API 21 中添加的 所以我不能
  • 在 D3 的上下文菜单中获取节点详细信息

    我正在尝试获取节点详细信息 id属性 当右键单击时 contextmenu函数被调用 我可以使用获取节点对象var self d3 select this 但我无法计算出 节点的 id 属性 不过我可以在控制台日志中看到它 我打算通过id一
  • CSS 三角形是如何工作的?

    有很多不同的 CSS 形状CSS 技巧 CSS 的形状我对三角形特别困惑 triangle up width 0 height 0 border left 50px solid transparent border right 50px s
  • 纯函数可以返回符号吗?

    这可能有点哲学性 但我认为这是提问的正确地点 假设我有一个创建 ID 列表的函数 这些标识符仅在应用程序内部使用 因此使用 ES2015 是可以接受的Symbol here 我的问题是 技术上 当您请求一个符号时 我想 JS 运行时会创建一
  • 在 Javascript 中查找字符串的所有小写和大写组合

    我正在找这个堆栈溢出问题用 Javascript 来回答 因此 如果我的输入是 word 该函数应该返回 单词 单词 单词 单词 单词 单词 ETC 这是我到目前为止所拥有的 但它只产生排列 不大写任何东西 var perm functio
  • Android 自定义日历视图禁用特定日期

    我是 Android 开发新手 开始开发一个预订应用程序 有一个日历视图 我想禁用该日历中的预订日期 我发现 Android 默认日历中没有禁用功能 那么您能帮我找到一个可以禁用特定日期的良好自定义日历视图吗 我需要资源或图书馆 谢谢你 在
  • 尝试在空对象上调用接口方法“android.media.session.ISessionController android.media.session.ISession.getController()”

    下面的代码是带有使用媒体会话的控件的音乐通知播放器 每当我单击通知中的控件时 它就会崩溃并出现上述错误 请参阅下面的代码 如果我错了 请纠正我 在下面的代码中 我使用媒体会话和广播接收器来构建通知 track 是我所有歌曲数据的模型类 tr
  • 当“display_errors”打开时,为什么此语法错误会返回 HTTP 错误 500?

    给定以下脚本 我得到了预期的 Notice Use of undefined constant error assumed error in htdocs test php on line 8 但如果我在脚本中添加一些东西 I get HT
  • NSXMLParser 从 XML 标签中检索错误数据

    我正在读取带有某些字段的 xml 例如
  • Python lambda 不接受元组参数[重复]

    这个问题在这里已经有答案了 我在两台 PC Linux 和 Windows 上运行带有 PyDev v2 6 插件的 Eclipse SDK v3 6 我想传递一个元组作为参数 例如 foo lambda x y y x print foo
  • Fancybox 导致 IE 加载速度缓慢?

    我正在使用 Fancybox v 1 3 4 在 iframe 中显示视频这一页 Fancybox 和视频显示良好 但问题是 自从添加代码后 我在 IE7 8 中加载网站时遇到了巨大的停顿 类似于这个问题 页面加载后 UI 冻结了 4 5
  • 从故障转储中获取 GDI 句柄计数的命令

    我有一个故障转储 我怀疑 GDI 泄漏是导致崩溃的原因 从完整的故障转储中是否可以找出我的进程崩溃时使用的 GDI 句柄的数量 我创建了一个 Windbg 脚本来转储 GDI 句柄表中的所有 GDI 句柄 看https aloiskraus
  • 构建 Logistic 回归模型时出现“检测到完美分离,结果不可用”

    作为我作业的一部分 我正在构建逻辑回归模型 但在构建模型时出现错误 检测到完美分离 结果不可用 X train year amt spnt rank 1 1 723034 0 418500 0 272727 2 0 716660 2 088
  • QTimer::timeout 没有触发

    我正在尝试创建一个在我的 Singleton 工作线程中每 n 秒触发一次的事件 信号 槽连接 信号是 QTimer 超时 槽是调用另一个 Singleton 类的 lambda 函数 无法正常工作 连接调用成功 计时器处于活动状态 并且我
  • 两列布局,左侧流体,右侧填充其余宽度

    我需要类似的东西this and this 但是我希望右列不是固定大小 而是可变大小 是否可以 some text stretch to fill the remaining space lt viewport 这是float解决方案 您可
  • Java 构造函数中的“this”

    嗯 这是一个非常基本的问题 我从来没有用java编写过代码 但我正在为朋友编写一个类 有类似的东西 class myClass private string name public string getName return this na
  • 如何通过php找到给定的十进制值的位数?

    我对php不太熟悉 但我知道我们可以通过php找到给定数字的位值 例如 如果输入为 23 56 则应回显 2 十 3 个 5 百分之一 6 千分之一 任何想法将不胜感激 请帮忙 Try str 23 56 strdiv explode st
  • Spark RDD:如何最有效地计算统计数据?

    假设存在类似于以下的元组 RDD key1 1 key3 9 key2 3 key1 4 key1 5 key3 2 key2 7 计算每个键对应的统计信息的最有效 并且理想情况下是分布式 的方法是什么 目前 我特别希望计算标准差 方差 据
  • 二维数组与一维数组的性能

    在 C 中 m n 二维数组与长度为 m n 的一维数组 对于 m 和 n 的较大值 之间在时间和空间上是否存在差异 使用一维数组访问元素会更快吗 在 C 中 二维数组只是一维数组的简洁索引方案 就像一维数组一样 二维数组分配单个连续内存块
  • 无法在 webview 上加载地理位置

    我想将地理位置加载到 android 2 1 上的 webview 中 地理定位在我的浏览器上运行良好 但在 webview 上却失败了 public class WebPageLoader extends Activity impleme