原生android跳转到h5+开发的android界面

在hbuilder官网下载最新sdk,解压后的内容如下:

原生android跳转到h5+开发的android界面_第1张图片

在androidstudio上新建一个android项目,主界面就一个按钮很简单

原生android跳转到h5+开发的android界面_第2张图片

导入jar包,亲测至少需要这几个包


原生android跳转到h5+开发的android界面_第3张图片

用Hbuilder创建一个简单的app项目,如果不会请问度娘

查看app的id,可以自己修改,我为了偷懒没有修改


原生android跳转到h5+开发的android界面_第4张图片

回到android studio 在main目录下创建assets文件夹,在assets目录下创建apps文件夹,在apps目录下创建名字为appid的目录,然后在这个目录下创建www目录,注意一定要一个目录一个目录创建,不要直接创建一个apps.H5BF312F2.www目录,虽然看起来效果貌似一样,不要问我为什么要强调这个。。。。


原生android跳转到h5+开发的android界面_第5张图片

然后将创建的Hbuilder项目内容全部拷贝到这个目录下


原生android跳转到h5+开发的android界面_第6张图片


原生android跳转到h5+开发的android界面_第7张图片

然后在assets目录下创建data目录,创建dcloud_control.xml文件和dcloud_properties.xml文件

内容如下

原生android跳转到h5+开发的android界面_第8张图片
原生android跳转到h5+开发的android界面_第9张图片

最后来创建一个承载这个webapp的界面,具体代码如下


```

public classMain2ActivityextendsAppCompatActivity {

EntryProxymEntryProxy=null;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//        setContentView(R.layout.activity_main2);

FrameLayout frameLayout =newFrameLayout(this);

WebappModeListener listener =newWebappModeListener(this,frameLayout);

mEntryProxy= EntryProxy.init(this,listener);

mEntryProxy.onCreate(this,savedInstanceState,SDK.IntegratedMode.WEBAPP,null);

setContentView(frameLayout);

}

@Override

protected voidonDestroy() {

super.onDestroy();

mEntryProxy.onStop(this);

}

classWebappModeListenerimplementsICore.ICoreStatusListener,IOnCreateSplashView{

Activityactivity;

ViewsplashView=null;

ViewGrouprootView;

IAppapp=null;

ProgressDialogpd=null;

publicWebappModeListener(Activity activity,ViewGroup rootView){

this.activity= activity;

this.rootView= rootView;

}

@Override

public voidonCoreReady(ICore iCore) {

SDK.initSDK(iCore);

SDK.requestAllFeature();

}

@Override

public voidonCoreInitEnd(ICore iCore) {

String appBasePath ="/apps/H5BF312F2";

String args ="{url:'http://www.baidu.com'}";

app= SDK.startWebApp(Main2Activity.this,appBasePath,args, newIWebviewStateListener() {

@Override

publicObjectonCallBack(inti,Object o) {

switch(i){

caseIWebviewStateListener.ON_WEBVIEW_READY:

View view = ((IWebview) o).obtainApp().obtainWebAppRootView().obtainMainView();

view.setVisibility(View.INVISIBLE);

if(view.getParent() !=null){

((ViewGroup)view.getParent()).removeView(view);

}

rootView.addView(view,0);

break;

}

return null;

}

},this);

}

@Override

public booleanonCoreStop() {

return false;

}

@Override

publicObjectonCreateSplash(Context context) {

return null;

}

@Override

public voidonCloseSplash() {

app.obtainWebAppRootView().obtainMainView().setVisibility(View.VISIBLE);

}

}

}

```


我这里是做的一个最简单最精简的demo,将Hbuilder官方出的demo裁剪出来的,如果是app有其他需要权限的功能,需要导入对应的jar包,添加权限,修改dcloud_properties.xml文件,在apps目录下添加步骤和上面一样,修改Main2Activity里面appBasePath的值就行了,具体的看官方demo。

github地址:https://github.com/ganlong-2016/H5Test

恩,下一步该研究的就是怎么在h5里面调用自定义的java类。

你可能感兴趣的:(原生android跳转到h5+开发的android界面)