У меня есть WebView, который не позволяет phonegap выполнять свои плагины, инициализировать приложение или выполнять функции.Я получаю начальный gap_init: 3, а затем разрыв: [0, ошибки «CoreAndroid», так как он не проходит через скрипт.При поиске исправления обнаружил эти потенциальные исправления и предпринял корректирующие действия.
1. Ссылка cordova.js из index.html.Нет эффекта 2. Синхронизация библиотек.Плагин Android 3.2.0 в Android Studio.Gradle 4.6, Cordova 8.1.2 Нет эффекта 3. Убедитесь, что разрешения для геолокации присутствуют в манифесте и получены через JAVA.см. код ниже
Я создал приложение с Cordova, используя Windows CLI.затем добавил мои плагины.TTS, геолокация и inAppBrowser.Затем импортировал приложение в Android Studio.Я могу запустить приложение, используя loadUrl (launchUrl), который использует вид по умолчанию, и приложение работает отлично.Мне нужен WebView, потому что мне нужно сегментировать макет WebView в activity_main.xml.Когда я представлю WebView, он не будет установлен на setWebChromeClient.Если я закомментирую setWebChromeClient, приложение будет выполнено, но геолокация не сделает свое дело.Я знаю, что есть также проблема с некоторыми разновидностями WebView, не работающими, как они делали в прошлом.CordovaWebView теперь является интерфейсом, а не модулем, и его веб-просмотр имеет проблемы с WebChromeClient или чем-то еще.Извините, мне нужно перечитать эту ситуацию.У Crosswalk WebView также есть проблемы.
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// enable Cordova apps to be started in the background
Bundle extras = getIntent().getExtras();
if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
moveTaskToBack(true);
}
if (checkCallingPermission(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Permission was previously granted", Toast.LENGTH_LONG).show();
runHistOrigin();
} else {
if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_COARSE_LOCATION)) {
Toast.makeText(this, "Permission is required to allow GPS to track your current position.",
Toast.LENGTH_LONG).show();
}
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},1 );
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantReaults){
if (requestCode == 1) {
PackageManager pm = this.getPackageManager();
int hasPerm = pm.checkPermission(
android.Manifest.permission.ACCESS_COARSE_LOCATION,
this.getPackageName());
if (hasPerm != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Permission WAS NOT GRANTED.", Toast.LENGTH_LONG).show();
}
if (grantReaults[0] == PackageManager.PERMISSION_GRANTED) {
//Toast.makeText(this, "Permission was granted.", Toast.LENGTH_LONG).show();
runHistOrigin();
} else {
Toast.makeText(this, "Permission was not granted", Toast.LENGTH_SHORT).show();
runHistOrigin();
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantReaults);
}
}
public class GeoWebChromeClient extends WebChromeClient {
@Override
public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
}
public class GeoWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
public void runHistOrigin() {
mWebView = findViewById(R.id.webview);
//adView1 = findViewById(R.id.adView);
//AdRequest adRequest = new AdRequest.Builder().build();
//adView1.loadAd(adRequest);
mWebView.setWebChromeClient(new GeoWebChromeClient());
mWebView.setWebViewClient(new GeoWebViewClient());
WebSettings webSettings = mWebView.getSettings();
webSettings.setDomStorageEnabled(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setGeolocationEnabled(true);
//loadUrl(launchUrl);
mWebView.loadUrl(launchUrl);
}
}
Кто-нибудь знает, почему cordova / phonegap не выполняется с использованием android.webkit.WebView.
В стековой трассировке ничего не отображается.