Android 使用js調用Java


效果如:

image

主要用到一個接口類:MyObject

package com.example.jsdemo;

import android.content.Context;
import android.support.v7.app.AlertDialog;
import android.webkit.JavascriptInterface;
import android.widget.Toast;


public class MyObject {
    private Context context;
    public MyObject(Context context) {
        this.context = context;
    }

    //將顯示Toast和對話框的方法暴露給JS腳本調用
    @JavascriptInterface
    public void showToast(String name) {
        Toast.makeText(context, name+"我是后台追加的", Toast.LENGTH_SHORT).show();
    }

    @JavascriptInterface
    public void showDialog() {
        new AlertDialog.Builder(context)
                .setTitle("標題")
                .setMessage("我是Java不帶參").create().show();
    }
}
View Code

MainActivity實現如: 

package com.example.jsdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {
    private WebView wView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wView = (WebView) findViewById(R.id.wView);
        wView.loadUrl("file:///android_asset/demo1.html");
        WebSettings webSettings = wView.getSettings();
        //①設置WebView允許調用js
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDefaultTextEncodingName("UTF-8");
        //②將object對象暴露給Js,調用addjavascriptInterface
        wView.addJavascriptInterface(new MyObject(MainActivity.this), "myObj");
    }
}
View Code

然后是main的布局: 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="hello_world"
        android:id="@+id/textView" />
    <WebView
        android:id="@+id/wView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="5dp" />


</RelativeLayout>
View Code

最后是html文件: 

<html>
<head>
    <title>Js調用Android</title>
</head>

<body>
<input type="button" value="JS調用Java(帶參)" onclick="myObj.showToast('我是Js參數~');"/>
<input type="button" value="JS調用Java(不帶參)" onclick="myObj.showDialog();"/>
</body>
</html>
View Code

源代碼下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM