我有一个WebView,它将不允许phonegap执行其插件,初始化应用程序或执行功能。我得到一个初始的gap_init:3,然后是gap:[0,“ CoreAndroid”错误,因为它无法通过脚本。
在寻找修补程序时,遇到了这些潜在的修补程序并已采取纠正措施。
1.从index.html引用cordova.js。没有效果
2.同步库。将Android 3.2.0插件插入Android Studio。 Gradle 4.6,Cordova 8.1.2无效
3.确保清单中存在对地理定位的权限,并且可以通过JAVA获得。参见下面的代码
我使用Windows CLI使用Cordova创建了该应用程序。然后添加我的插件。 TTS,地理位置和inAppBrowser。然后将应用程序导入Android Studio。 我可以使用loadUrl(launchUrl)运行该应用程序,该程序使用默认的View,并且该应用程序可以完美运行。但是,我需要一个WebView,因为我需要在activity_main.xml中分割WebView的布局。当我介绍WebView时,它将在setWebChromeClient上失败。如果我将setWebChromeClient注释掉,则该应用将执行,但是地理定位将无法完成任务。 我知道某些版本的WebView不能像过去那样起作用。 CordovaWebView现在是一个接口,而不是一个模块,并且其Webview出现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);
}
}
有人知道为什么不使用android.webkit.WebView执行cordova / phonegap吗?
在堆栈跟踪中什么都没有显示。