应用研发平台EMAS有Android端集成WindVane的demo吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
是的,应用研发平台EMAS提供了Android端集成WindVane的相关示例代码和步骤指导。以下是基于知识库资料整理的详细解答:
EMAS为开发者提供了完整的Android端集成WindVane的示例代码和配置步骤,帮助开发者快速实现H5应用的集成与功能扩展。
在集成WindVane之前,需要完成以下初始化步骤: - 添加依赖:在app/build.gradle
文件中添加WindVane依赖。
implementation ('com.emas.hybrid:emas-hybrid-android:1.1.0.2-public') {transitive true}
AndroidManifest.xml
中注册PermissionActivity
。
<activity android:name="android.taobao.windvane.runtimepermission.PermissionActivity" />
Application
类的onCreate
方法中初始化EmasHybrid
。
EmasHybrid.getInstance()
.setOpenLog(true)
.setAppKey(mAppkey)
.setAppSecret(mAppSecret)
.setTtid(mChannelID)
.setAppVersion(BuildConfig.VERSION_NAME)
.setZcacheEnable(true)
.setZcacheUrl(mCacheURL)
.setConfig(builder.build())
.init(application);
EMAS提供了Fragment形式的H5容器,开发者可以通过以下代码创建一个继承自BaseActivity
的Activity,并使用EmasHybridWebViewHelper
实例化Fragment:
public class WebViewSampleActivity extends BaseActivity {
private Fragment webViewFragment;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview_sample);
webViewFragment = EmasHybridWebViewHelper.getInstance().installWebView(
this,
Uri.parse("https://emas.xxx.com/"),
R.id.root,
new WVWebViewClient(this) {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
},
null);
}
// 返回键处理
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webViewFragment != null) {
boolean result = EmasHybrid.getInstance().isUseUc()
? ((WVUCWebViewFragment) webViewFragment).onBackPressed()
: ((WVWebViewFragment) webViewFragment).onBackPressed();
return result || super.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
// 回调事件处理
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
webViewFragment.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onPause() {
webViewFragment.onPause();
super.onPause();
}
@Override
protected void onResume() {
webViewFragment.onResume();
super.onResume();
}
}
为了确保内置的Navigator模块生效,需要在AndroidManifest.xml
中为Activity添加IntentFilter配置:
<activity android:name=".WebViewSampleActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="emas.xxx.com" />
</intent-filter>
</activity>
在布局文件中添加FrameLayout
,并在Activity中使用EmasHybridInstance
渲染Fragment:
<FrameLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent" />
通过WVStandardEventCenter
类,可以在Native和H5之间发送事件,实现双向通信: - Native向H5发送事件:
WVStandardEventCenter.postNotificationToJS("eventName", "eventData");
window.WindVane.call("NativeMethodName", {param: "value"}, function(result) {
console.log(result);
});
WVEventListener
接口并注册事件监听器。以上内容展示了EMAS提供的Android端集成WindVane的完整Demo代码和配置步骤。开发者可以按照这些步骤快速搭建H5容器,并实现Native与H5之间的高效交互。如果有进一步的需求或问题,建议参考官方文档中的详细说明。