Android分享笔记(5) Android 与 JS 交互

在JS中调用Java方法:

(1) 首先为JS提供接口

WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.loadUrl(" file:///android_asset/js/index.html ");
    webView.addJavascriptInterface(new AndroidToastForJs(MainActivity.this), "demo");
}

public class AndroidToastForJs {

    private Context mContext;

    public AndroidToastForJs(Context context) {
        this.mContext = context;
    }
    @JavascriptInterface
    public String getTitle(){
        return "This is Titl";
    }
    @JavascriptInterface
    public String getContent(){
        return "this is content ,this is contentthis is contentthis is content";
    }
    @JavascriptInterface
    public String getStatement(){
        return "this is statement";
    }
}

将这个接口对象传给JS( WebKit )

webView.addJavascriptInterface(new AndroidToastForJs(MainActivity.this), "demo");

于是,现在JS知道了一个叫做“demo”的接口类可以供他使用

(2)在JS中调用Java方法:

<html lang="en">
<!-- By ElyarAnwar-->
<script>
    window.onload = function(){getTitle();getContent();getStatement()};
    function getTitle() {
        var title = document.getElementById(‘title‘);
        title.innerHTML = window.demo.getTitle();
    }
    function getContent(){
        var content = document.getElementById(‘content‘);
        content.innerHTML = window.demo.getContent();
    }
    function getStatement(){
        var statement = document.getElementById(‘statement‘);
        statement.innerHTML = window.demo.getStatement();
    }
</script>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="bootstrap.min.css">
</head>
<body>
<!-- Begin page content -->
<div class="container">
    <div class="page-header text-center" style="font-family: SketchRockwell">
        <h4><span><strong id="title"></strong></span></h4>
    </div>
    <p id="content" class="lead text-justify" style="font-family: SketchRockwell"></p>
</div>

<footer class="footer">
    <div class="container">
        <p id="statement" class="text-muted text-right" style="font-family: ‘SketchRockwell"></p>
    </div>
</footer>
</body>
</html>

完成在JS中调用Java方法!

图:

时间: 2024-08-24 10:33:31

Android分享笔记(5) Android 与 JS 交互的相关文章

Android分享笔记(4) Android的webview加载本地html、本apk内html和远程URL

//打开本包内asset目录下的index.html文件 webView.loadUrl(" file:///android_asset/index.html "); //打开本地sd卡内的index.html文件 wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html"); //打开指定URL的html文件 wView.loadUrl(" http://m.oschi

Android学习笔记_78_ Android开发中使用软引用和弱引用防止内存溢出

在<Effective Java 2nd Edition>中,第6条"消除过期的对象引用"提到,虽然Java有 垃圾回收机制,但是只要是自己管理的内存,就应该警惕内存泄露的问题,例如的对象池.缓存中的过期对象都有可能引发内存泄露的问题.书中还提到可以用 WeakHashMap来作为缓存的容器可以有效解决这一问题.之前也确实遇到过类似问题,但是没有接触过"弱引用"相关的问题,于是查阅了一些资料. <Java 理论与实践: 用弱引用堵住内存泄漏>

九、Android学习笔记_ Android开发中使用软引用和弱引用防止内存溢出

在<Effective Java 2nd Edition>中,第6条"消除过期的对象引用"提到,虽然Java有 垃圾回收机制,但是只要是自己管理的内存,就应该警惕内存泄露的问题,例如的对象池.缓存中的过期对象都有可能引发内存泄露的问题.书中还提到可以用 WeakHashMap来作为缓存的容器可以有效解决这一问题.之前也确实遇到过类似问题,但是没有接触过"弱引用"相关的问题,于是查阅了一些资料. <Java 理论与实践: 用弱引用堵住内存泄漏>

Android学习笔记_79_ Android 使用 搜索框

1.在资源文件夹下创建xml文件夹,并创建一个searchable.xml: <?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/sms_search" android:hint="@st

Android学习笔记一 Android的构成

一个Android程序是由多个Activity松散构成通过Intnet对象相互调用每个Activity相对独立. R文件:自动生成,存储着程序集所包含的资源文件. src:包含程序中所有的Activity类文件. 新添加的Activity必须在AndroidManifest.xml中进行注册. values:该文件夹下的元素会在R文件中生成资源ID. Android学习笔记一 Android的构成

Android分享笔记(1) 获取屏幕尺寸,包括状态栏

一大波干货来袭,屏幕尺寸各种获得,状态栏尺寸可正确获得,亲测. package com.elyar.app.util.measure; import java.lang.reflect.Field; import android.app.Activity; import android.util.DisplayMetrics; public class DisplayMeasure {  /**   * Note:个人经验不服来辩<br>   * 只有activity可以使用getWindow

(android学习笔记)Android View

Android View类: 1.所有的Android组件均是View的子类. 2.所有的组件均可以进行两种配置,一是通过方法进行配置.二是通过XML进行配置. TextView类: 1.对于文本组件而言主要的目的是静态的显示一些文字,类似于标签的功能. 2.其是android.widget.TextView类,是android.view.View类的直接子类. 3.插入超链接的方法: 1)在XML文件中的TextView组件配置中写:android:autoLink="all" 会自

Android学习笔记十七.Android数据存储与IO.File存储常用API

Android通过一套完整的I/O流体系,包括FileInputStream.FileOutputStream等,通过这些I/O流来访问手机存储上的文件. 一.API 1.File (1)功能:该类提供一些有限的功能-获取或设置文件的权限.文件类型.最后依次修改时间等,通常它所代表的文件名(包含路径)将被转换为UTF-8字节序列被使用. (2)继承关系 java.lang.Object ? java.io.File (3)构造方法  File(File dir, String name):构造一

android学习笔记(9)android程序调试学习

相应若水老师的第十四课 一,Log日志输出 Log.v(tag,message);        //verbose模式,打印最具体的日志 Log.d(tag,message);        //debug级别的日志 Log.i(tag,message);        //info级别的日志 Log.w(tag,message);        //warn级别的日志 Log.e(tag,message);        //error级别的日志 tag用来标记log消息的源头用常量来表示.