Android Webview页面无法正确加载页面

我正在尝试使用Android Studio模拟器(Nexus 5)将页面加载到Android应用程序webview中。 但是,页面加载不正确,卡在加载屏幕上。 该页面确实需要GeoLocation权限,但是我已经启用了它们。

以下是我的代码和应用程​​序的XML。

MainActivity.java

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView webview; setContentView(R.layout.activity_main); webview = (WebView)findViewById(R.id.help_webview); //webview use to call own site webview.setWebViewClient(new WebViewClient()); webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setDomStorageEnabled(true); webview.getSettings().setAllowContentAccess(true); webview.getSettings().setAllowFileAccess(true); webview.getSettings().setAppCacheEnabled(true); webview.getSettings().setAllowUniversalAccessFromFileURLs(true); webview.getSettings().setAllowContentAccess(true); webview.getSettings().setGeolocationEnabled(true); webview.getSettings().setDatabaseEnabled(true); webview.setWebChromeClient(new WebChromeClient() { public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) { // callback.invoke(String origin, boolean allow, boolean remember); callback.invoke(origin, true, false); } }); webview.loadUrl("https://lit-citadel-6989.herokuapp.com"); } 

activity_main.xml

 <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/help_webview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="none" android:largeHeap="true" /> 

AndroidManifest.xml中

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.example.example" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <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" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

更新:这肯定是一个地理定位问题。 我没有gps.config文件。 我似乎无法find一个具体的方法来创build一个或我需要的。 在网站上的JavaScript获取的位置是

 navigator.geolocation.getCurrentPosition(function(location){ setLatLng(location); locationLoaded = true; callback(lat,lng); }); 

那么我怎么才能在android中设置webview传递用户的当前位置?

Solutions Collecting From Web of "Android Webview页面无法正确加载页面"

还有其他用户使用这种方法,它工作正常, 问题是你正在模拟器上testing这个

为了在仿真器上获得可用的GPS / Location API,您可以使用geo fix命令。

您可以使用此GUI工具轻松地在您的模拟器上设置伪造的GPS位置。

有关geo fix命令的详细信息可以在这里find。

我实现onConsoleMessage方法(在WebChromeClient )来看看发生了什么,并得到一个错误:

 @Override public boolean onConsoleMessage(android.webkit.ConsoleMessage consoleMessage) { Log("WebConsole: " + consoleMessage.message() + " [line:" + consoleMessage.lineNumber() + "]"); return true; } WebConsole: Uncaught SyntaxError: Unexpected token function [line:1] 

确保模拟器已启用GPS。 有一个很好的教程是另一个问题: 如何在Android模拟器中模拟GPS位置?

希望有所帮助。