当前位置: 首页 > news >正文

国内最新重大新闻/指定关键词seo报价

国内最新重大新闻,指定关键词seo报价,网站建设滕州信息港,有没有做美食的小视频网站原生页面虽然有着天然优势,但是在一些复杂页面和混排页面上,却没有网页来的快,所以在实际项目中,很多情况下都是原生页面掺杂着webView 加载js的网页的,这就涉及到两者之间的交互以及传值问题,很久以前就碰…

原生页面虽然有着天然优势,但是在一些复杂页面和混排页面上,却没有网页来的快,所以在实际项目中,很多情况下都是原生页面掺杂着webView 加载js的网页的,这就涉及到两者之间的交互以及传值问题,很久以前就碰到这样的需求了,当时做出来了,今天再次碰到,感觉是时候提出来写一下,方便以后查看。

先来看Android调用js的代码

方法一共是两种

使用WebView 的loadUrl()方法

使用WebView的evaluateJavascript()

loadurl 方法既可以是一个本地地址也可以是一个网址,我们就以本地网页为示例吧

首先可以在android 的asset资源文件下存放网页

Carson_Ho

// JS代码

// Android需要调用的方法

function AndroidcallJS(){

alert("Android调用了JS的AndroidcallJS方法");

}

然后在Activity里设置webView的属性

WebSettings webSettings = mWebView.getSettings();

// 设置与Js交互的权限

webSettings.setJavaScriptEnabled(true);

// 设置允许JS弹窗

webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

// 格式规定为:file:///android_asset/文件名.html

mWebView.loadUrl("file:///android_asset/javascript.html");

然后在你需要的地方,设置一个监听事件

mClick.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 通过Handler发送消息

mWebView.post(new Runnable() {

@Override

public void run() {

// 注意调用的JS方法名要对应上

// 调用javascript的callJS()方法

mWebView.loadUrl("javascript:AndroidcallJS()");

}

});

}

});

mWebView.setWebChromeClient(new WebChromeClient() {

@Override

public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {

AlertDialog.Builder mDialog= new AlertDialog.Builder(MainActivity.this);

mDialog.setTitle("弹窗");

mDialog.setMessage(message);

mDialog.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

result.confirm();

}

});

mDialog.setCancelable(false);

mDialog.create().show();

return true;

}

});

}

}

这样就可以了,但是好像这种方法是有一个坑的,就是一定要在webview页面加载完成之后

我们再来看第二种方法 evaluateJavascript()

这种方法是更加简洁和高效的。以上网页资源文件不变,把loadUrl 换成这个方法调用就可以了

mWebView.evaluateJavascript("javascript:AndroidcallJS()", new ValueCallback() {

@Override

public void onReceiveValue(String value) {

//此处为 js 返回的结果

}

});

}

该方法也是只能在android 4.4以上才能使用

我们再来看一下js 调用Android方法

有3种:

通过WebView的addJavascriptInterface()进行对象映射

通过 WebViewClient 的shouldOverrideUrlLoading ()方法回调拦截 url

通过 WebChromeClient 的onJsAlert()、onJsConfirm()、onJsPrompt()方法回调拦截JS对话框alert()、confirm()、prompt() 消息

这里我着重讲第一种吧,因为第一种用过的比较多一点

首先我们要在自己的Activity里创建一个接口

internal inner class JS {

@JavascriptInterface

fun jsCallOCWithArgument() {

var isLogIn = SPUtils.get(SPConstants.IS_LOGIN, false) as Boolean

if (isLogIn) {

var intent = Intent(this@PackageInfoActivity,

if (is_self == 3) ToShopComsumeActivity::class.java else BuyTicketActivity::class.java)

intent.putExtra("productId", productId)

startActivity(intent)

} else {

startActivity(Intent(this@PackageInfoActivity, LoginActivity::class.java))

}

}

}

在Activity里还是这样调用就好了

// 设置与Js交互的权限

setting.javaScriptEnabled = true

// 设置允许JS弹窗

setting.javaScriptCanOpenWindowsAutomatically = true

setting.defaultTextEncodingName = "utf-8"

setting.cacheMode = WebSettings.LOAD_NO_CACHE//不使用缓存,只从网络获取数据.

webView.loadUrl(webUrl)

webView.addJavascriptInterface(JS(), "android")

webView.webChromeClient = object : WebChromeClient() {

override fun onReceivedTitle(view: WebView, title: String?) {

super.onReceivedTitle(view, title)

if (title != null) {

firstTitle.text = title

}

}

}

}

就先说到这里吧,来任务了,要去码项目了

http://www.lbrq.cn/news/1294345.html

相关文章:

  • 教育中介公司网站建设费用/网络营销的培训课程
  • 怎么让学生在网站上做问卷调查/百度收录入口在哪里
  • 高端网网站建设/网站推广营销运营方式
  • 求职网站开发多少钱/长春百度推广公司
  • 电商摄影/seo产品优化免费软件
  • crazyuncle WordPress/某网站seo诊断分析
  • html全部源码免费/北京seo优化诊断
  • 中山做网站优化/百度识图网页版 在线
  • 网站建设服务合同缴纳印花税吗/百度广告联盟怎么加入
  • php ajax网站开发/百度企业认证怎么认证
  • 医院建网站/百度收录api怎么提交
  • 中国建设银行江西分行网站首页/百度收录
  • 广州哪家做网站/长尾关键词挖掘工具
  • 做一家电商网站需要多少钱/企业网站模板 免费
  • 网站建设需求说明书/泉州搜索推广
  • 页面设计一般用什么软件/seo专业培训
  • 我司如何自己建设动态网站/关键词搜索引擎又称为
  • 信息课做网站的软件/seo咨询师
  • 做学校网站的目的是什么/恶意点击软件哪个好
  • 上海建筑工程股份有限公司/江西短视频seo搜索报价
  • 做的美食视频网站/百度推广可以自己开户吗
  • 澳门网站建设/免费学生网页制作成品代码
  • 酒店电子商务网站策划书/制作一个网站大概需要多少钱
  • 网站建设百度搜索到左边的图/网络营销管理
  • js网站建设/b站2020推广网站
  • 常德公司做网站/百度广告联盟平台的使用知识
  • 实验一html静态网站开发/百度上海总部
  • 直播视频网站如何做/营销管理制度范本
  • 如何建立免费网站的步骤/内江seo
  • 聊城哪里做优化网站/点击器
  • [深度学习] 大模型学习3上-模型训练与微调
  • PyQt5—QInputDialog 学习笔记
  • Apache Ignite Binary Object 调优
  • 【图文详解】Transformer架构详细解析:多头自注意力机制、qkv计算过程、encoder架构、decoder架构以及mask的意义
  • Chris Fraser | 中国早期思想中墨家与荀子的知识论
  • Oracle RU19.28补丁发布,一键升级稳