uniapp开发app框架在提升开发效率中的独特优势与应用探索
830
2022-10-25
一个轻量级的app混合开发框架
jsbridge-hostApp
一个轻量级的app混合开发框架 使用简便 ##1、工程引用姿势 1.1、clone 工程到你本地 1.2、在你自己工程的build.grale 文件中加入依赖 ##2、java代码编写姿势(提供给H5调用的java方法) 2.1 编写任一一个java类引用@WebTag注解 例如
package com.lingyi.simplehostapp;import android.text.TextUtils;import android.webkit.WebView;import android.widget.Toast;import com.google.gson.Gson;import com.lingyi.easybridge.NativeTOJsResult;import com.lingyi.easybridge.ProviderToWeb;import com.lingyi.easybridge.TaskModel;import com.lingyi.easybridge.WebTag;import com.lingyi.easybridge.framework.EasyNativeToJsCallBack;import org.json.JSONException;import org.json.JSONObject;/** * Created by lingyi on 16/9/8. * Copyright © 1994-2016 lingyi™ Inc. All rights reserved. */@WebTag //使用@WebTag注解 标记该类为提供给H5调用的类public class NativeToJsClass { @ProviderToWeb(taskModel = TaskModel.ASYNC) //用@ProviderToWeb注解 标记该方法是为h5调用的方法 并指定参数 同步还是异步 该方法必须带有三个参数 第一个webview 第二个h5传过来的参数为jsonObject类型,第三个参数为回调h5方法 public static void getUserInfo(WebView webView, JSONObject param, final EasyNativeToJsCallBack callback) { String request = param.optString("ask"); Log.i("lingyi","来自h5的请求:"+request); if (null != callback) { User user = new User("lingyi","man","22"); Gson gson = new Gson(); try { JSONObject object = new JSONObject(gson.toJson(user)); callback.sendResult(new NativeTOJsResult(NativeTOJsResult.Status.OK,object)); } catch (JSONException e) { e.printStackTrace(); try { callback.sendResult(new NativeTOJsResult(NativeTOJsResult.Status.ERROR,new JSONObject("{msg:'error'}"))); } catch (JSONException e1) { e1.printStackTrace(); } } } } static class User{ String name; String sex; String age; public String getName() { return TextUtils.isEmpty(name) ? "" : name; } public void setName(String name) { this.name = name; } public String getSex() { return TextUtils.isEmpty(sex) ? "" : sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return TextUtils.isEmpty(age) ? "" : age; } public void setAge(String age) { this.age = age; } public User(String name, String sex, String age) { this.name = name; this.sex = sex; this.age = age; } }}
2.2 activity代码编写姿势
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); EasyFragment fragment = new EasyFragment(); fragment.init(this);//必须先初始化 getFragmentManager().beginTransaction().replace(R.id.content_framelayout,fragment).commit(); fragment.showWebPage("file:///android_asset/hostindex.html"); }}
3.2 然后在javascript中调用EasyHdp.do('service','params',success,erro);需要给四个参数第一个参数service指定调用native代码中的哪个类中的哪个方法 例如NativeToJsClass.getUser Info调用的是NativeToJsClass类中getUserInfo方法,第二个参数params 传递给native的参数是一个Jason字符串 例如{'name':'lingyi'}可为空{},第三个参数为成功的回调,第四个参数为失败的回调,具体如下:
##4白名单管理 4.1 在assets目录下有一个叫做config.xml的文件,它可以设置很多初始化的信息例如
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~