weex小菜鸟一只,最近在用weex做项目,其中Android端进行界面跳转所采用的方案是,将编写好的weex界面通过webpack打包生成js文件,然后将这些js文件放置在Android项目的assets目录下进行跳转加载。跳转的weex代码为:
var url = weex.config.bundleUrl url = url.split('/').slice(0, -1).join('/') + '/' + path + '.js' navigator.push({ url: url, animated: 'true' })
然后就一直跳转不成功,看了下weex navigator.push()的源码发现这个默认是加载网络的url,所以在Android里面正确的跳转方式应该是跳转activity,在跳转的activity里面重新进行跳转目标地址的渲染,上网搜发现需要在AndroidManifest.xml文件的activity定义里如下设置:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<action android:name="com.alibaba.weex.protocol.openurl"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.taobao.android.intent.category.WEEX"/>
<data android:scheme="http"/>
<data android:scheme="https"/>
<data android:scheme="file"/>
</intent-filter>
`
后来发现上面的这些配置如果是通过webpack生成的Android项目会自带这些 = =!
在activity中可以通过
Uri uri = getIntent().getData();
获取到跳转的目标路径,然后再按照这个路径进行渲染就能够实现加载本地assets中的界面了