H5與Activity之間的通信(調用)


1.通過H5頁面的超鏈接尾部信息不同進行跳轉(類似於URL攔截器)

例如:控件x的href="http://www.example.com/?menu_id=1",

在代碼中添加webview

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

/**
 * Author:JsonLu
 * DateTime:2015/8/31 17:52
 * Email:luxd@i_link.cc
 */
public class SecoundActivity extends Activity{

    private WebView mWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = (WebView)findViewById(R.id.webview);
        String url = "http://jcut.sinaapp.com/androidjs/second.html?menu_id=1";
        this.mWebView.loadUrl(url);
        mWebView.setWebViewClient(new MyWebViewClient());

    }
    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Log.d("URL",url);
            Intent it = new Intent();
            if(url.endsWith("?menu_id=1")){
                it.setClass(SecoundActivity.this, MainActivity.class);
                startActivity(it);
            }else{
                Toast.makeText(SecoundActivity.this,"時間:"+System.currentTimeMillis(),Toast
                        .LENGTH_LONG).show();
            }
            return true;
        }
    }
}

2.通過js調用本地類的方法

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.Toast;

/**
 * Author:JsonLu
 * DateTime:2015/8/31 17:52
 * Email:luxd@i_link.cc
 */
public class MainActivity extends Activity {


    private WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.initView();
    }

    @TargetApi(Build.VERSION_CODES.ECLAIR_MR1)
    private void initView() {
        this.mWebView = (WebView) this.findViewById(R.id.webview);
        //可以執行javascript
        this.mWebView.getSettings().setJavaScriptEnabled(true);
        String url = "http://jcut.sinaapp.com/androidjs/";
        this.mWebView.loadUrl(url);
        //android添加javascript代碼,讓H5頁面能夠調用,第二個參數對應的是H5的
        this.mWebView.addJavascriptInterface(new PayJavaScriptInterface(), "js");
    }

    private class PayJavaScriptInterface {

        @JavascriptInterface
        public void jumpActivity(int param) {
            if (param == 1) {
                Intent it = new Intent();
                it.setClass(MainActivity.this, SecoundActivity.class);
                startActivity(it);
            } else {
                Toast.makeText(MainActivity.this, "時間:" + System.currentTimeMillis(), Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }
}

index.html

<html>
<head>
<meta charset="UTF-8">
<title>交互Demo</title>
<meta content="initial-scale=1.0,user-scalable=no,maximum-scale=1,width=device-width" name="viewport">
<style>
body{width:100%;height:auto;text-align:center;background-color:#eee}
button{width:80%;height:40px;background-color:#36A803;border:1px solid #ddd;border-radius:5px;font-size:18px;color:#fff;margin-top:50px;}
</style>
</head>
<body>
<div id="userinfo"></div>
<button onClick="toActivity(1);">跳轉</button>
<button onClick="toActivity(2);">顯示時間</button>
<script>
function toActivity(param){
    //調用本地的類(js)的jumpActivity()方法;
    window.js.jumpActivity(param);
}
</script>
</body>
</html>

second.html

<html>
<head>
<meta charset="UTF-8">
<title>交互Demo</title>
<meta content="initial-scale=1.0,user-scalable=no,maximum-scale=1,width=device-width" name="viewport">
<style>
body{width:100%;height:auto;text-align:center;background-color:#eee;}
#userinfo{margin-top:50px}
a{text-decoration:none;width:80%;padding:5% 30% 5% 30%;height:40px;background-color:#36A803;border:1px solid #ddd;border-radius:5px;font-size:18px;color:#fff;}
</style>
</head>
<body>
<div style="margin-top:50px">
<a href="http://jcut.sinaapp.com/androidjs/index.html?menu_id=1">跳轉</a>
</div>
<div style="margin-top:200px">
<a href="http://jcut.sinaapp.com/androidjs/index.html?menu_id=2">顯示時間</a>
</div>
</body>
<html>


免責聲明!

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



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