如何通过单击(离子)网络视图中的按钮来更改 android activity?

How to change android activity by clicking a button in (ionic) webview?

我正在使用 Ionic 4 开发混合应用程序。与其他基于 html5 的应用程序一样,Ionic 在 MainActivity 中作为 webview 运行。使用电容器我已将我的应用程序导入 android studio 并创建了一个 SecondActivity。如何通过首先单击 activity(MainActivity) 中的按钮(这是一个 Ioninc 页面,肯定是 html webview)来转到 SecondActivity

到目前为止,我已经尝试了不同的方法来实现这一点,但没有成功。 我按照本教程创建了一个 cordova 插件: 它在 cordova 应用程序中运行完美,但我没有成功将它导入 Ionic。 我也尝试过 Capacitor 并且显然使用电容器访问本机代码应该非常容易但不幸的是到目前为止我没有运气。 https://capacitor.ionicframework.com/docs/plugins/android

您可以使用 WebView.addJavaInterface 来完成。只需在 Java 中写入一个 Android class(以启动您想要的 Activity),然后通过调用 WebView.addJavaInterface() 将对象注入到 WebView 上下文中。单击 HTML 按钮时,调用注入的 JS 方法启动 Activity.

Activity 启动器:

class MyJsInterface {
    @JavascriptInterface
    public String launchActivity() {
        // ...;
    }
 }

注入它:

webview.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyJsInterface(), "AndroidInterface");
webView.loadUrl(...);

在您的网页中:

<button onclick="AndroidInterface.launchActivity()">Launche Activity</button>

辛苦了!这是答案: 我提到的插件实际上在 cordova 中很酷并将它带到 ionic4(因为插件的破坏是 "PluginName",你必须在你的打字稿中声明和使用它)我的代码如下(home.page.ts):

import { Component } from '@angular/core';
declare var PluginName: any;
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
goToCustomActivity(){
PluginName.new_activity();
}
}

在你的 home.page.html:

<ion-content>
<ion-button (click)="goToCustomActivity()">go to custom activity</ion- 
button>
</ion-content>

我希望这对某人有所帮助。 特别感谢插件的原始编码器 "Ijas Ahamed N" 你可以在这里找到编写插件的说明: https://www.ijasnahamed.in/2016/11/start-android-activity-from-cordova.html 这是 Whosebug(请注意!在 Whosebug 中省略了创建 package.json 的步骤!)