[英]Android Webview with HTML 5 geolocation
我正在使用webview加載Web應用程序。 在我加載的頁面中,我使用HTML 5地理位置API來檢測用戶位置。 這適用於所有瀏覽器,目前可以在iOS應用程序中使用。 出於某種原因,我無法在Android webview中使用它。 當我運行下面的代碼時,我在堆棧跟蹤中看到此消息:
[INFO:CONSOLE(24)]“未捕獲的ReferenceError:未定義PageMethods”,來源:[腳本的URL](24)
再次,這在瀏覽器中運行良好。
package bar.krowd.krowdapp;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.GeolocationPermissions;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends AppCompatActivity {
private WebView KrowdView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
KrowdView = (WebView) findViewById((R.id.activity_main_webview));
WebSettings ws = KrowdView.getSettings();
ws.setJavaScriptEnabled(true);
ws.setGeolocationEnabled(true);
KrowdView.setWebViewClient(new WebViewClient());
KrowdView.setWebChromeClient(new GeoWebChromeClient());
KrowdView.setBackgroundColor(Color.BLACK);
KrowdView.loadUrl([I AM PUTTING THE URL HERE]);
}
@Override
public void onBackPressed() {
// Pop the browser back stack or exit the activity
if (KrowdView.canGoBack()) {
KrowdView.goBack();
}
else {
super.onBackPressed();
}
}
public class GeoWebChromeClient extends WebChromeClient {
@Override
public void onGeolocationPermissionsShowPrompt(String origin,
GeolocationPermissions.Callback callback) {
// Always grant permission since the app itself requires location
// permission and the user has therefore already granted it
callback.invoke(origin, true, false);
}
}
}
我的AndroidManifest.xml中列出了以下內容:
<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" />
這似乎是一個錯誤,我解決了它在app build.gradle中將targetSdkVersion從23降級到21
添加這個:
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDomStorageEnabled(true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.