最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

三步搞定:Vue.js調(diào)用Android原生操作

 更新時(shí)間:2020年09月07日 10:36:33   作者:BennyShi98  
這篇文章主要介紹了三步搞定:Vue.js調(diào)用Android原生操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

第一步: Android對(duì)Js的接口,新建AndroidInterfaceForJs.js

import android.content.Context;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.RequiresApi;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.ValueCallback;
import android.widget.Toast;
import com.just.agentweb.AgentWeb;
import com.yidumedical.ui.activity.PAWebActivity;

/**
 * Created by shiby on 2018/1/24.
 */

public class AndroidInterfaceForJS {

 private Handler deliver = new Handler(Looper.getMainLooper());
 private AgentWeb agent;
 private Context context;

 public AndroidInterfaceForJS(AgentWeb agent, Context context) {
  this.agent = agent;
  this.context = context;
 }

 @JavascriptInterface
 public void callAndroid(final String msg) {
  deliver.post(new Runnable() {
   @Override
   public void run() {
    Log.i("Info", "main Thread:" + Thread.currentThread());
    Toast.makeText(context.getApplicationContext(), "" + msg, Toast.LENGTH_LONG).show();
   }
  });
  Log.i("Info", "Thread:" + Thread.currentThread());

 }

}

第二步: 給WebView中的window注入對(duì)象(例子使用的是AgentWeb)

private void init(){
 mAgentWeb = AgentWeb
   .with(this)//傳入Activity or Fragment
   .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))//傳入AgentWeb 的父控件 ,如果父控件為 RelativeLayout , 那么第二參數(shù)需要傳入 RelativeLayout.LayoutParams ,第一個(gè)參數(shù)和第二個(gè)參數(shù)應(yīng)該對(duì)應(yīng)。
   .useDefaultIndicator()// 使用默認(rèn)進(jìn)度條
   .defaultProgressBarColor() // 使用默認(rèn)進(jìn)度條顏色
   .createAgentWeb()//
   .ready()
   .go(baseURL);
 //注入對(duì)象
 mAgentWeb.getJsInterfaceHolder().addJavaObject("android",new AndroidInterfaceForJS(mAgentWeb,this.getApplicationContext()));
 AgentWebSettings agentWebSettings = mAgentWeb.getAgentWebSettings();
 agentWebSettings.getWebSettings().setDomStorageEnabled(true);
}
注入對(duì)象:
 //注入對(duì)象
 mAgentWeb.getJsInterfaceHolder().addJavaObject("android",new AndroidInterfaceForJS(mAgentWeb,this.getApplicationContext()));

第三步:在Vue里面直接調(diào)用方法(簡(jiǎn)單粗暴法):

window.android.callAndroid('調(diào)用成功,耶?。?!')

考慮到項(xiàng)目的可維護(hù)性,一般不這樣寫(xiě)。

優(yōu)雅法:

新建app.js

const android = window.android

export { android }

將 window.android存在該模塊,方便更改

然后在需要的.js或者.vue文件中,導(dǎo)入app模塊,然后使用

import {android} from '../app'
try {
android.callAndroid('調(diào)用成功,耶!??!')
} catch (e) {
console.log('出現(xiàn)錯(cuò)誤, 如果在非android環(huán)境下訪問(wèn), 出現(xiàn)該警告是正常的.')
}

補(bǔ)充知識(shí):vue與原生安卓相互調(diào)用

最近公司有做直播類的項(xiàng)目,由于直播框架限制,限制所用的技術(shù)是vue搭建的H5頁(yè)面嵌入到原生安卓中。由于之前沒(méi)有過(guò)類似的混合開(kāi)發(fā)經(jīng)驗(yàn),所以今天寫(xiě)篇博客加深下印象。

vue.js調(diào)用安卓方法

先將vue項(xiàng)目放到一個(gè)內(nèi)網(wǎng)地址或者外網(wǎng)地址中,然后安卓端通過(guò)“webView.loadUrl()”將vue項(xiàng)目引入。安卓端將要調(diào)用的方法名暴露在window對(duì)象中,由vue直接在methods中調(diào)用并攜帶參數(shù)。

 methods:{
  goPublish(){
   //將vue項(xiàng)目引入至安卓代碼中,安卓方法暴露在window中,vue中可以直接用window去調(diào)取方法。
   window.android.callAndroidMethod('1','2')
  }
 }

安卓調(diào)用vue.js中的方法

同樣的vue也需要把方法添加到window中去,再由安卓端去調(diào)取方法。

 created(){
 //需要在created鉤子中將方法添加到window對(duì)象中
  window.setFun = this.setFun;
 },
 methods:{
  setFun(arg) {
   //arg: 原生調(diào)用Vue時(shí)傳值(arg)給Vue
   console.log("獲取到android的傳參:" + arg);
  },
 }

以上就是vue與安卓端項(xiàng)目調(diào)用的大致方法,有用詞不當(dāng)?shù)牡胤酵:也涣咧刚OM芙o大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

霍城县| 雅江县| 改则县| 通道| 苏州市| 镶黄旗| 阿勒泰市| 邵武市| 屏南县| 东城区| 舒城县| 中方县| 泌阳县| 宜春市| 兴城市| 探索| 安吉县| 汉阴县| 宜章县| 五河县| 淳化县| 报价| 阜宁县| 扎囊县| 托克托县| 永定县| 苍山县| 清河县| 南汇区| 保山市| 崇州市| 巴东县| 内黄县| 长垣县| 太原市| 铁岭市| 锦屏县| 滁州市| 台湾省| 贞丰县| 玉山县|