关闭

Android和html5的js交互

标签: Androidhtmljs
350人阅读 评论(0) 收藏 举报
分类:

最近比较流行android和html5混合开发,那么彼此间的交互效果是少不了的,就是最基本的h5嵌套有的时候也需要彼此控制,那么该怎么实现呢?接下来看代码......

   

H5

/*

function ValueFromAndroid(obj){    

     document.getElementById("web").innerHTML=obj;

    }

function shareAnIos(){    //用于标识 比如登陆传login  我就调用android微信登陆 传wxapy 我就掉微信支付    var lei = "login";    try{      myObj.ValueFromJS(lei); //调用安卓 方法    }catch(error){      console.log(error)    }finally{    }}*/

Android

private static boolean isExit = false;

/**

 * WebView就是一个简单的浏览器,android浏览器源码存在于LINUX/android/package/apps/Browser

 * 里面的所有操作都是围绕WebView来展开的

 */

WebSettings settings = wv_hry.getSettings();

// 设置编码

settings.setDefaultTextEncodingName("utf-8");

// 是否支持支持js

settings.setJavaScriptEnabled(true);

// 是否支持保存密码

settings.setSavePassword(false);

// 是否支持保存数据

settings.setSaveFormData(false);

// 是否支持访问文件数据

settings.setAllowFileAccess(true);

settings.setDomStorageEnabled(true);

// 调整到原webview的大小

settings.setUseWideViewPort(true);

// 支持自动加载图片

settings.setLoadsImagesAutomatically(true);

// 是否支持缩放

settings.setSupportZoom(false);

// 设置背景颜色 透明

wv_hry.setBackgroundColor(Color.argb(0, 0, 0, 0));

 

// 设置本地调用对象及其接口

wv_hry.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");

// 载入js,对应当前projectasserts目录

// 也可以写file:///sdcard/index.html

wv_hry.loadUrl("http://139.224.56.54/hry/index.php");

wv_hry.setWebViewClient(new SimonWebViewClient());

//处理h5弹框

wv_hry.setWebChromeClient(new WebChromeClient() {

@Override

public boolean onJsAlert(WebView view, String url, String message,

JsResult result) {

return super.onJsAlert(view, url, message, result);

}

});

//非点击时获取数据和传送数据

wv_hry.post(new Runnable() {

@Override

public void run() {

String url = wv_show.getUrl();

String title = wv_show.getTitle();

}

});

}

 

/**

 * js传递数据

 * @param view

 */

public void clickButton(View view) {

wv_hry.loadUrl("javascript:ValueFromAndroid('" + "simon" + "')");

}

 

/**

 * 获取js数据

 * @author Simon

 */

class JavaScriptObject {

Context mContxt;

 

public JavaScriptObject(Context mContxt) {

this.mContxt = mContxt;

}

 

/**

 * 返回的字符串数量不限

 * @param value1

 */

@JavascriptInterface

public void ValueFromJS(String value1, String value2) {

Log.i("Simon", "-------------------" + "value1 = " + value1

+ " value2 = " + value2);

}

}

 

class SimonWebViewClient extends WebViewClient {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

}

 

/**

 * 双击退出

 */

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

String currentUrl = wv_hry.getUrl();

String firstUrl = "http://139.224.56.54/hry/index.php";

String secondeUrl = "http://139.224.56.54/hry/index.php/earnings";

String thirdUrl = "http://139.224.56.54/hry/index.php/service";

String fourthUrl = "http://139.224.56.54/hry/index.php/mine";

if (currentUrl.equals(firstUrl) || currentUrl.equals(secondeUrl)

|| currentUrl.equals(thirdUrl)

|| currentUrl.equals(fourthUrl)) {

exit();// 这里也可以弹出对话框

} else {

wv_hry.canGoBack();

wv_hry.goBack();

}

 

}

return false;

}

 

private void exit() {

if (!isExit) {

isExit = true;

Toast.makeText(this, "在按一次退出程序", Toast.LENGTH_SHORT).show();

new Timer().schedule(new TimerTask() {

@Override

public void run() {

isExit = false;

}

}, 2000);

} else {

finish();

}

}


DEMO:点击打开链接


0
0
查看评论

JS与Android原生交互

JS与Android原生交互 在项目的开发中我们会遇到android 原生与Html5的混合开发,我们可能会需要在android中调用js里面的方法进行数据交互或其他的特殊处理,又或者在Html页面调用android的原生的统一弹框或其他处理。这时候我们就需要给android和js设置接口,进行相...
  • u013279462
  • u013279462
  • 2017-05-19 10:47
  • 274

Android和HTML5混合开发中android代码与JS交互

当下HTML5非常火,使用HTML5混合开发的好处是当开发者想要修改某一个非原生页面时,修改提交之后不用对应用进行升级发版,有人说HTML5将来将会取代原生开发,但个人感觉就目前来说这体验感还没完全达到原生的水平,今天做了个小Demo用于android与javaScript的交互测试1. 说混合开发...
  • qq_33589836
  • qq_33589836
  • 2017-01-17 15:09
  • 1070

WebView---Android与js交互实例

Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML)交互有四种情况: 1) Android(Java)调用HTML中js代码 2) An...
  • IT1039871366
  • IT1039871366
  • 2015-06-05 09:37
  • 45308

Android:你要的WebView与 JS 交互方式 都在这里了

前言 现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现 今天我将全面介绍Android通过WebView与JS交互的全面方式 阅读本...
  • carson_ho
  • carson_ho
  • 2017-03-22 09:19
  • 88489

android与html5交互

现在app中嵌套html5的用法相当的普及,但是对于她们之间的交互却又感到很模糊,接下来从两方面讲解一下,自己动手写就会明白很多。一、点击html5页面中的按钮,调用android中的方法1、android页面 webView = (WebView) findViewById(R.id.webvie...
  • hello_1s
  • hello_1s
  • 2016-10-14 18:46
  • 2566

iOS与网页JS交互,看我就够了

随着移动APP的快速迭代开发趋势,越来越多的APP中嵌入了html网页,但在一些大中型APP中,尤其是电商类APP,html页面已经不仅仅满足展示功能,这时html要求能与原生语言进行交互、相互传值。比如携程APP中一个热门景点的网页中,点击某个景点,可以跳转到原生中的该景点详情页控制器。 ...
  • LeaderQiu
  • LeaderQiu
  • 2016-07-19 15:07
  • 34474

android与js交互-jsbridge

对js与android交互进行的封装,可自定义协议,没有js注入漏洞,安全可靠,兼容android所有系统版本
  • y_chengyong
  • y_chengyong
  • 2016-10-09 16:27
  • 1129

Android与HTML+JS交互入门

在Android开发中,越来越多的商业项目使用了Android原生控件与WebView进行混合开发,当然不仅仅就是显示一个WebView那么简单,有时候还需要本地Java代码与HTML中的javascript进行交互,Android也对交互做了很好的封装,所以很容易实现例如:点击网页中的按钮Andr...
  • leejizhou
  • leejizhou
  • 2016-03-15 13:01
  • 38022

Android与Js基本交互

一直都想写博客,但是一直因为工作、个人时间安排不合理等等各方面原因,一直没有成功(>_<)。不过很开心,今天终于可以付诸行动。分享,带给人乐趣的同时,自己也是种重新学习。   记得去年做项目的时候,有一天快下班,突然下来一个任务,要求给项目添加一段Js的注入代码,附加一个新功能,当天就...
  • tangshuiming
  • tangshuiming
  • 2017-05-02 23:26
  • 381

安卓混合开发实例——JS与Java的交互

今天说说安卓混合开发。 曾经有一个话题是web终会一统app,然后我们看到随着时间的推移。web越来越强大(H5啊,JS各种框架啊),但同时原生app也在不断发展。 或许在将来还会再有这种话题论战,但目前,混合开发,结合web和原生app二者各自的优势,已经是众望所归了。其中最常见的一种方式,在...
  • lebang08
  • lebang08
  • 2016-10-18 13:42
  • 1826
    个人资料
    • 访问:45046次
    • 积分:1132
    • 等级:
    • 排名:千里之外
    • 原创:67篇
    • 转载:4篇
    • 译文:10篇
    • 评论:0条