我正在开发一个Android应用程序(webview)。启用地理定位需要其中一项功能,以便检测我在Google地图中的当前位置。
的Manifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
MainActivity.java(代码的一部分)
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setGeolocationEnabled(true);
mWebView.getSettings().setGeolocationDatabasePath(getApplicationContext().getFilesDir().getPath());
mWebView.setWebChromeClient(new GeoWebChromeClient());
public class GeoWebChromeClient extends WebChromeClient {
@Override
public void onGeolocationPermissionsShowPrompt(String origin,
GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
}
我已经使用Android 5.0(Lollipop)测试过,webview工作正常,Google Map可以检测到我当前的位置。对于Android 6.0,我从logcat收到错误,Google地图无法检测到我的精确位置。
> E/cr_LocationProvider: Caught security exception while registering for
> location updates from the system. The application does not have
> sufficient geolocation permissions.
非常感谢任何帮助。感谢。