Cordova - 如何从 android 代码更改页面?

Posted

技术标签:

【中文标题】Cordova - 如何从 android 代码更改页面?【英文标题】:Cordova - How to change page from android code? 【发布时间】:2018-07-23 04:24:35 【问题描述】:

乍一看,我的问题看起来很愚蠢,我的所有搜索都指出了 window.location 和其他 JS 内容或 externalWebPage 插件。这不是我要找的。​​p>

从 JAVA 代码中,当我在执行自定义插件期间捕获一个特定异常时,我想强制页面移动到“logout.html”。我不想执行 callback.error() 或以任何方式处理我网页中代码中的错误。我只想取消我的交易并在当前 Web UI 中加载一个 Web 资源。

有什么办法吗?

提前致谢。

【问题讨论】:

【参考方案1】:

CordovaWebView 提供了一个 showWebPage 函数来从本机代码加载任何 url。

从插件你应该可以做到

this.webView.showWebPage("logout.html", false, true, null);

还提供 loadUrl

this.webView.loadUrl("file:///android_asset/www/logout.html");

您还可以使用 loadUrl 来执行 javascript,这样您就可以从那里运行 window.location 而无需回调。

this.webView.loadUrl("javascript:window.location.href='logout.html'");

【讨论】:

谢谢,它相当简单,而且很有魅力。我使用了 loadUrl() 方法,因为我不想使用白名单。 sn-p 使用: ---- public void deleguateCompensation(CordovaInterface cordova, CordovaWebView webView) cordova.getActivity().runOnUiThread( new Runnable() @Override public void run() webView.loadUrl("file:// /android_asset/www/timeout.html"); //webView.showWebPage("logout.html", false, true, null); ); 【参考方案2】:

您需要将其添加到您的 main.js 界面,以便您可以调用 page changed () 并在您的角度代码中处理它。

这可以是一个简单的 onPageNeedsChanged 处理程序调用,您可以在其中保留页面更改上下文的上下文,并在需要时调用它。

或者你可以从调用者调用 onError 回调,如果它是一个一致的错误回调上下文将你移动到那里,但听起来你不想这样做。

因此,最简单的答案就是使用预加载的 Web url 和 Web 视图启动您自己的 Activity。您已经可以访问该活动,因此只需制作您自己的原生活动,其中包含完整的 Web 视图、硬编码的 url,然后在出错时启动您的活动。 即我这样做是为了发送电子邮件,但这可能是您自己的活动

  cordova.getActivity().startActivity(Intent.createChooser(emailIntent, "Send mail..."));

您甚至可以获得对 Cordova 网络视图的引用,但对此并不肯定,但我认为您可以通过对象树。

这对您的需求有用吗? 如果不是,您能否详细说明您在 onerror 回调中处理的犹豫。这是相当直接的。也许我可以帮助你作为替代方案?保留callingContext,只使用callingContext.error(withkey or instructions or object)也不错。

 A35ble.writeValueToPodCharacteristic(this.device.macAddress, true, this.bytesToSend,
        function (response) 
            console.log("Success: " + response);
            callbackContext.device.notificationReceivedFromPod(callbackContext.device.arrayBufferToString(response));
        , 
        function (response) 
            console.log("ERROR: " + response);
            alert("Error Sending NSM Message: " + response);
        
    );

例如,我制作了一个名为 A35ble 的 cordova 插件,用于管理我的蓝牙设备,在此响应中我只显示警报。

【讨论】:

以上是关于Cordova - 如何从 android 代码更改页面?的主要内容,如果未能解决你的问题,请参考以下文章

使用cordova将图片从android画廊分享到cordova应用程序

Gradle distributionUrl 使用“ionic cordova run android”更改为旧版本,构建失败

Cordova 3.6:如何从 Android 的照片库中提取 GPS Exif 数据?

如何从 Cordova 中的 android 设备后退按钮退出应用程序?

Cordova Android 插件 - 从 Cordova 插件打开一个 android 原生活动

需要从cordova插件-android调用js函数