地理位置不能负荷的WebView [英] Geolocation cannot be load on webview

查看:212
本文介绍了地理位置不能负荷的WebView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要加载地理位置到我的WebView在Android 2.1。地理位置效果很好在我的浏览器,但它并不能在web视图。

 公共类WebPageLoader扩展活动实现GeolocationPermissions.Callback {

    的WebView的WebView;
    字符串geoWebsiteURL =htt​​p://hngu.naf.cs.hut.fi/current_location.html;
    公共WebPageLoader(){
    }

    / **
     *调用方式创建的第一个活动。
     * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);

        的setContentView(R.layout.main);

        的WebView =(web视图)findViewById(R.id.webview);
        webview.getSettings()setJavaScriptEnabled(真)。
        。webview.getSettings()setJavaScriptCanOpenWindowsAutomatically(真正的);
        webview.getSettings()setGeolocationEnabled(真)。 //好像如果我设置,web视图应及时当我打电话navigator.geolocation.getCurrentPosition
        GeoClient地缘=新GeoClient();
        webview.setWebChromeClient(GEO);
        字符串的起源=; //如何获得原产地在正确的格式?
        geo.onGeolocationPermissionsShowPrompt(原产地,这一点); //显然这不是怎样来使用,但预期使用没有记录
        webview.loadUrl(geoWebsiteURL);

    }

    公共无效的invoke(字符串出身,布尔允许,布尔记住){

    }

    最后一类GeoClient扩展WebChromeClient {

    @覆盖
    公共无效onGeolocationPermissionsShowPrompt(字符串产地,
    回调回调){
    // TODO自动生成方法存根
    super.onGeolocationPermissionsShowPrompt(产地,回调);
    callback.invoke(原产地,真,假);
    }

    }

    }
 

我的manifest.xml

 < XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
      包=net.Webview_Android
      安卓版code =1
      机器人:VERSIONNAME =1.0>

    <使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_COARSE_LOCATION/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_FINE_LOCATION/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_LOCATION/>
    <使用库
        机器人:名称=com.google.android.maps/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_GPS/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_ASSISTED_GPS/>
    <使用-SDK安卓的minSdkVersion =7/>
    <应用机器人:图标=@可绘制/图标机器人:标签=@字符串/ APP_NAME>
        <活动机器人:WebPageLoaderNAME =
                  机器人:标签=@字符串/ APP_NAME
                  机器人:主题=@安卓风格/ Theme.NoTitleBar>
            <意向滤光器>
                <作用机器人:名称=android.intent.action.MAIN/>
                <类机器人:名称=android.intent.category.LAUNCHER/>
            &所述; /意图滤光器>
        < /活性GT;

    < /用途>
< /舱单>
 

当我运行的应用程序。它显示带有标记的谷歌地图。然而,它不能找到当前位置,即使我的HTML文件效果很好。请帮我。太谢谢你了。

解决方案

  @覆盖
公共无效的onCreate(包savedInstanceState){
  super.onCreate(savedInstanceState);

  的setContentView(R.layout.main);

  的WebView =(web视图)findViewById(R.id.webview);
  webview.getSettings()setJavaScriptEnabled(真)。
  。webview.getSettings()setJavaScriptCanOpenWindowsAutomatically(真正的);
  webview.getSettings()setGeolocationEnabled(真)。


  webView.setWebChromeClient(新WebChromeClient(){
    公共无效onGeolocationPermissionsShowPrompt(
      字符串的起源,
      GeolocationPermissions.Callback回调){
        callback.invoke(原产地,真,假);
      }
  });
  webview.loadUrl(geoWebsiteURL);
}
 

我的作品。

我使用的权限:

 <使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>
<使用-权限的Andr​​oid:名称=android.permission.ACCESS_GPS/>
<使用-权限的Andr​​oid:名称=android.permission.ACCESS_ASSISTED_GPS/>
<使用-权限的Andr​​oid:名称=android.permission.ACCESS_LOCATION/>
<使用-权限的Andr​​oid:名称=android.permission.ACCESS_COARSE_LOCATION/>
<使用-权限的Andr​​oid:名称=android.permission.ACCESS_FINE_LOCATION/>
 

请注意,这对Android模拟器,你必须设置与地理固定的位置

I want to load Geolocation into my webview on android 2.1. The geolocation works well on my browser, but it does fail on 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);
    }

    }

    }

My manifest.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>

When I run the app. It display the google map with the marker. However, it cannot find the current location even though my html file works well. Please help me. Thank you so much.

解决方案

@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);                    
}

works for me.

I use the permissions:

<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" />

Note, that on the Android emulator you have to set a location with geo fix.

这篇关于地理位置不能负荷的WebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆