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

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

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

有什么办法吗?

提前致谢。

【问题讨论】:

    标签: android cordova plugins


    【解决方案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 插件,用于管理我的蓝牙设备,在此响应中我只显示警报。

    【讨论】:

      猜你喜欢
      • 2012-06-17
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 2011-04-16
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多