Я могу использовать addJavascriptInterface в простом Html и js для передачи нативного Java-кода на Android (скажем, для отображения Toast).Но я не могу использовать это в Ionic и машинописи.
вот моя основная деятельность:
package io.ionic.starter;
import android.content.Context;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.Toast;
import org.apache.cordova.*;
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// enable Cordova apps to be started in the background
Bundle extras = getIntent().getExtras();
if (extras != null && extras.getBoolean("cdvStartInBackground",
false)) {
moveTaskToBack(true);
}
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
WebView webView = (WebView) appView.getEngine().getView();
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
}
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
// Show Toast Message
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
}
это мой home.ts в Ionic4:
import { Component } from '@angular/core';
declare var Android:any;
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
showToast(){
alert("show alert");
Android.showToast('Toast made by Javascript');
}
}
и HTML-часть:
<ion-button (click)="showToast()">show toast</ion-button>
и ошибка, когда я отлаживаю это:
ERROR CONTEXT DebugContext_ {view: {…}, nodeIndex: 13, nodeDef: {…}, elDef: {…}, elView: {…}}
кто-нибудь, помогите мне, пожалуйста.я потратил 2 дня на получение доступа из веб-просмотра к Java-коду без удачи!