如何在 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 工作了
您好,我正在创建一个 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 工作了