Я пытаюсь загрузить страницу в веб-приложение приложения Android с помощью эмулятора Android Studio (Nexus 5). Однако страница загружается неправильно и застревает на экране загрузки. Для этой страницы требуются разрешения GeoLocation, но я уже включил их.Страница веб-просмотра Android-сайта не правильно загружается
Ниже приведен мой код и 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>
UPDATE: Это геолокации вопрос наверняка. У меня нет файла gps.config. Кажется, я не могу найти конкретный способ создать то, что мне нужно для этого. Javascript на сайте, чтобы получить место в
navigator.geolocation.getCurrentPosition(function(location){
setLatLng(location);
locationLoaded = true;
callback(lat,lng);
});
Как я могу затем настроить WebView в андроиде, чтобы передать текущее местоположение пользователя?
0 from 0 предоставляют явные статические значения lat, lng для javascript, во-вторых, откройте страницу в браузере эмулятора по умолчанию, посмотрите, как она себя ведет, если возможно, тогда попытайтесь получить устройство вместо эмулятора или по крайней мере используйте genymotion для этих типов вещи, так как его больше зависит от аппаратного обеспечения. Кстати, вы можете вставить весь класс java и код javascript тоже thx – Ahmad