【问题标题】:how to call native Activity class from html page in MobileFirst hybrid application如何在 MobileFirst 混合应用程序中从 html 页面调用本机 Activity 类
【发布时间】:2016-06-30 02:12:24
【问题描述】:

您好,我正在创建一个 MobileFirst 混合应用程序,需要在 index.html 页面加载时启动/调用 Activity 类 onCreate() 方法。

【问题讨论】:

    标签: java android layout ibm-mobilefirst setcontentview


    【解决方案1】:

    使用 SendAction API:https://www.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.dev.doc/devref/t_sending_actions_js_to_native.html

    您可以在 wlCommonInit 中直接调用,一旦 MobileFirst SDK 完全初始化,就会调用它。

    【讨论】:

      【解决方案2】:
      Use this API
      
      main.js
      
      
      var param = {
                    name: "hello"   //parameter pass to activity
                  };
      WL.NativePage.show("com.xyz.TestActivity", function(data){
              alert("data from activity "+data);
          }, param);
      
      Make TestActivity in pkg com.xyz
      
      TestActivity.java
      
      package com.xyz;
      import android.util.Log;
      import android.annotation.TargetApi;
      import android.app.Activity;
      import android.content.Intent;
      import android.os.Build;
      import android.os.Bundle;
      
      public class TestActivity extends Activity {
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_test);
      
          String l_name = getIntent().getStringExtra("name");  // way to take   param from js file
      
          Intent in = new Intent();
          in.putExtra("test", "hello success");  // return data to js from activity
          setResult(RESULT_OK, in);
          finish();
      }
      

      }

        AndroidManifest.xml
      
       <activity android:name=".TestActivity"></activity> 
      

      【讨论】:

      • 谢谢!很有帮助,:).. 现在我需要从本机活动中调用我的 html 页面,猜想使用了 WL 客户端但不确定如何?
      • 也许我可以再解释一下,我已经在我的 JS 中实现了 OnActionReceived 函数,并在我的原生代码的列表项点击中调用它。WL.getInstance().sendActionToJS("LoadPageReceiver");这里,WL.getinstance 给出了 java.state.illegalstateexception
      • stackoverflow.com/questions/31331579/…点击链接(请标记为已回答:))
      • 在您的活动中实现“WLActionReceiver”,它将起作用。
      【解决方案3】:

      这就是我所做的,

      继承了 CordovaActivity 类而不是 Activity 类并实现了 WLInitWebFrameworkListener。在 onInitWebFrameworkComplete 事件中添加:

      super.loadUrl(WL.getInstance().getMainHtmlFilePath());
      

      在 Oncreate() 方法下添加

      WL.createInstance(this);
      WL.getInstance().initializeWebFramework(getApplicationContext(), this);
      

      现在我的 SendActionAPI 工作了

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-19
        相关资源
        最近更新 更多