Я интегрировал android файл aar в проект cordova и создал плагин cordova для вызова активности arr. Внутри этого действия есть веб-представление для загрузки URL-адреса, для sampe я использовал "http://apache.org". Действие вызывается из pugn, но загруженный веб-просмотр в эмуляторе / устройстве пуст. Не могли бы вы сказать мне, можно ли загружать веб-представление действий из кордовы, поскольку кордова - это одностраничное веб-приложение. Я застрял и не могу продолжить. Я добавил фрагменты кода ниже.
//this method calls the activity nside the aar whch has the web view.
public class MyPlugin extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("coolMethod")) {
String message = args.getString(0);
this.coolMethod(message, callbackContext);
return true;
}
return false;
}
private void coolMethod(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
callbackContext.success(message);
Intent intent = new Intent(cordova.getActivity(), MainActivityWV.class);
cordova.getActivity().startActivity(intent);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}
//index.js implementation
cordova.plugins.MyPlugin.coolMethod("coolMethod", function(response){
console.log(response);
}, function(error){
console.log(error);
});
//config.xml cordova
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
<allow-navigation href="http://app/*" />
<preference name="Scheme" value="https" />
<preference name="MixedContentMode" value="2" />
<framework custom="true" src="libs/myapplication-debug.aar" type="gradleReference" />
//aar's activity with web view:
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_test);
myWebView = (WebView)findViewById(R.id.webview);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setAppCacheEnabled(true);
myWebView.getSettings().setDatabaseEnabled(true);
myWebView.getSettings().setDomStorageEnabled(true);
myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
myWebView.getSettings().setPluginState(android.webkit.WebSettings.PluginState.ON);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setLoadWithOverviewMode(true);
myWebView.getSettings().setGeolocationEnabled(true);
myWebView.setWebViewClient(new WebViewClient()
{
@Override
public void onReceivedSslError(WebView view, SslErrorHandler
handler, SslError error)
{
handler.proceed();
Log.d(TAG, "onReceivedSslError: "+error.toString());
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d(TAG, "onPageStarted: ");
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d(TAG, "onPageFinished: ");
view.setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.colorAccent));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
Log.d(TAG, "shouldOverrideUrlLoading: ");
return super.shouldOverrideUrlLoading(view, request);
}
});
myWebView.setBackgroundResource(android.R.color.transparent);
myWebView.loadUrl("http://apache.org");
}
это действие загружено из кордовы, но веб-представление пустое