我基于react项目为android创建了一个本地webview。 我想访问设备位置,但是当我打开应用程序时显示错误:这是我在android中添加的权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
在我的app.js
文件中,我创建了一个useEffect
函数来访问我的位置,如下所示:
useEffect(() => {
navigator.geolocation.getCurrentPosition(positions => {
/*
setLat(positions.coords.latitude);
setLon(positions.coords.longitude);
*/
localStorage.setItem("lat", positions.coords.latitude);
localStorage.setItem("lon", positions.coords.longitude);
}, err => alert(err));
}, [])
我在运行应用程序时会显示alert
消息
而belov是我的Java代码:
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
AlertDialog .Builder alertDialog;
alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setMessage("permite accesul la locatie")
.setTitle("eroare locatie");
AlertDialog mesajEroare = alertDialog.create();
mesajEroare.show();
} else {
mySite = (WebView)findViewById(R.id.site);
mySite.getSettings().setGeolocationDatabasePath( MainActivity.this.getFilesDir().getPath() );
mySite.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
WebSettings setari = mySite.getSettings();
setari.setJavaScriptEnabled(true);
setari.setDomStorageEnabled(true);
setari.setDatabaseEnabled(true);
setari.setDatabasePath("/data/data/" + mySite.getContext().getPackageName() + "/databases/");
setari.setGeolocationEnabled(true);
mySite.loadUrl("http://10.0.2.2:3000/");
}
我不知道问题出在哪里! 谢谢!