如何在 MobileFirst 混合应用程序中从 html 页面调用本机 Activity class

how to call native Activity class from html page in MobileFirst hybrid application

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

使用 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 完全初始化就会调用。

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> 

这就是我所做的,

继承了CordovaActivityclass而不是Activityclass并实现了WLInitWebFrameworkListener。在 onInitWebFrameworkComplete 事件中添加:

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

在 Oncreate() 方法下添加

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

现在我的 SendActionAPI 工作了