欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android與H5互調(diào)詳細(xì)介紹

 更新時間:2017年04月28日 10:51:37   投稿:lqh  
這篇文章主要介紹了Android與H5互調(diào)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下

Android與H5互調(diào)詳細(xì)介紹

   微信,微博,微商,QQ空間,大量的軟件使用內(nèi)嵌了H5,這個時候就需要了解Android如何更H5交互的了;有些外包公司,為了節(jié)約成本,采用Android內(nèi)嵌H5模式開發(fā),便于在iOS上直接復(fù)用頁面,最終解決成本。

        為什么學(xué)android也要學(xué)h5?

Android很多軟件都有內(nèi)嵌H5的,有什么用處、優(yōu)勢?節(jié)約成本,提高開發(fā)效率。

實現(xiàn)的原理是什么?

        本質(zhì)是:Java代碼和JavaScript調(diào)用

案例一:Java與Js簡單互調(diào)

        首先,在Android代碼中加載H5頁面:

private void initWebView() {
  webView = new WebView(this);
  WebSettings webSettings = webView.getSettings();
  //設(shè)置支持javaScript腳步語言
  webSettings.setJavaScriptEnabled(true);

  //支持雙擊-前提是頁面要支持才顯示
  webSettings.setUseWideViewPort(true);

  //支持縮放按鈕-前提是頁面要支持才顯示
  webSettings.setBuiltInZoomControls(true);

  //設(shè)置客戶端-不跳轉(zhuǎn)到默認(rèn)瀏覽器中
  webView.setWebViewClient(new WebViewClient());

  //加載網(wǎng)絡(luò)資源
  //webView.loadUrl("http://atguigu.com/teacher.shtml");
  webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html");

  //顯示頁面
  setContentView(webView);
 }

        JavaAndJavaScriptCall.html:

<html>
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 <script type="text/javascript">

 function javaCallJs(){
   document.getElementById("content").innerHTML += 
    "<br\>java調(diào)用了js無參函數(shù)";
 }

 function javaCallJs(arg){
   document.getElementById("content").innerHTML =
    ("歡迎:"+arg );
 }


 function showDialog(){
  alert("谷粉們你好,我是來自javascript");
 }
 </script>
</head>
<body>
<div align="left" id="content"> 谷粉</div>

<input type="button" value="點(diǎn)擊Android被調(diào)用" onclick="window.Android.showToast()" />
</body>
</html>

        Java調(diào)用javaScript:

/**
 * Java調(diào)用javaScript
 * @param numebr
 */
private void login(String numebr) {
 webView.loadUrl("javascript:javaCallJs("+"'"+numebr+"'"+")");
 setContentView(webView);
}

        JavaScript調(diào)用Java

 /**
  * js可以調(diào)用該類的方法
  */
 class AndroidAndJSInterface{
  @JavascriptInterface
  public void showToast(){
   Toast.makeText(JavaAndJSActivity.this, "我被js調(diào)用了", Toast.LENGTH_SHORT).show();
  }
 }
 //與此同時需要在webview當(dāng)中注冊,后面的“Android”與html中的對應(yīng):
 webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android");
 //html里的點(diǎn)擊事件實現(xiàn):<br>
 <input type="button" value="點(diǎn)擊Android被調(diào)用" onclick="window.Android.showToast()" />

案例二:H5頁面調(diào)用Android播放視頻

        了解了簡單調(diào)用,下面講的這個也就簡單了:

        1_JsCallJavaVideoActivity的布局和實例化控件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.atguigu.androidandh5.JsCallJavaVideoActivity">

 <WebView
  android:id="@+id/webview"
  android:layout_width="match_parent"
  android:layout_height="match_parent"/>

</RelativeLayout>

        2_實例化控件并且配置

public class JsCallJavaVideoActivity extends Activity {

 private WebView webView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_js_call_java_video);
  webView = (WebView) findViewById(R.id.webview);
  WebSettings webSettings = webView.getSettings();
  //設(shè)置支持javaScript腳步語言
  webSettings.setJavaScriptEnabled(true);

  //支持雙擊-前提是頁面要支持才顯示
//  webSettings.setUseWideViewPort(true);

  //支持縮放按鈕-前提是頁面要支持才顯示
  webSettings.setBuiltInZoomControls(true);

  //設(shè)置客戶端-不跳轉(zhuǎn)到默認(rèn)瀏覽器中
  webView.setWebViewClient(new WebViewClient());

  //加載網(wǎng)絡(luò)資源
//  webView.loadUrl("http://atguigu.com/teacher.shtml");
   webView.loadUrl("file:///android_asset/RealNetJSCallJavaActivity.htm");

 }

 }

        3_加載頁面

//加載本地資源 
 webView.loadUrl("file:///android_asset/RealNetJSCallJavaActivity.htm");

        4_參照js代碼寫Java被調(diào)用代碼

url = "/mobiles/interActive/65411";
var videourl = "http://10.0.2.2:8080/yellow.mp4";
var itemid = "65411";
var itemdesc = "1級單殺小龍,5級單殺峽谷先鋒!"; 
var itempic = "http://avatar.anzogame.com/pic_v1/lol/news/20160507/spic65411h572d6eaf.jpg";
var itemtitle = "6.9瑪爾扎哈OP套路教程";
var obj_play = document.getElementById('play');
var obj_download = document.getElementById('download');
if(obj_play != null) {
 obj_play.ontouchstart = function() {
  this.className = 'inter_click';
  javascript:android.playVideo(itemid, videourl, itemtitle);
  ajaxrequest('/stat/item', "POST", true, {type:'play', id:itemid});
 }
 obj_play.ontouchend = function() {
  this.className = 'inter';
 }
}

        5_配置Javascript接口

//設(shè)置支持js調(diào)用java
webView.addJavascriptInterface(new AndroidAndJSInterface(),"android");

        6_Javascript接口類

class AndroidAndJSInterface {
 /**
  * 該方法將被js調(diào)用
  * @param id
  * @param videoUrl
  * @param tile
  */
 @JavascriptInterface
 public void playVideo(int id,String videoUrl,String tile){
  //調(diào)起系統(tǒng)所有播放器
  Intent intent = new Intent();
  intent.setDataAndType(Uri.parse(videoUrl),"video/*");
  startActivity(intent);
 }
}

案例三:H5頁面調(diào)用Android撥打電話

        1_JsCallJavaCallPhoneActivity布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="com.atguigu.androidandh5.JsCallJavaVideoActivity">

 <WebView
  android:id="@+id/webview"
  android:layout_width="match_parent"
  android:layout_height="match_parent"/>

</RelativeLayout>

        2_初始化WebView并且配置

private WebView webView;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_js_call_java_video);
  webView = (WebView) findViewById(R.id.webview);
  WebSettings webSettings = webView.getSettings();
  //設(shè)置支持javaScript腳步語言
  webSettings.setJavaScriptEnabled(true);

  //支持雙擊-前提是頁面要支持才顯示
//  webSettings.setUseWideViewPort(true);

  //支持縮放按鈕-前提是頁面要支持才顯示
  webSettings.setBuiltInZoomControls(true);

  //設(shè)置客戶端-不跳轉(zhuǎn)到默認(rèn)瀏覽器中
  webView.setWebViewClient(new WebViewClient());

  //設(shè)置支持js調(diào)用java
  webView.addJavascriptInterface(new AndroidAndJSInterface(), "Android");

  //加載本地資源
//  webView.loadUrl("http://atguigu.com/teacher.shtml");
  webView.loadUrl("file:///android_asset/JsCallJavaCallPhone.html");

 }

        3_加載JsCallJavaCallPhone.html頁面

//加載本地資源
// webView.loadUrl("http://atguigu.com/teacher.shtml");
  webView.loadUrl(file:///android_asset/JsCallJavaCallPhone.html);

        4_從java代碼傳遞json數(shù)據(jù)給javascript

class AndroidAndJSInterface {
 /**
  * 該方法將被js調(diào)用,用于加載數(shù)據(jù)
  */
 @JavascriptInterface
 public void showcontacts() {
  // 下面的代碼建議在子線程中調(diào)用
  String json = "[{\"name\":\"阿福\", \"phone\":\"18600012345\"}]";
  // 調(diào)用JS中的方法
  webView.loadUrl("javascript:show('" + json + "')");
 }

 }

        5_撥打電話代碼

class AndroidAndJSInterface {
  /**
   * 該方法將被js調(diào)用,用于加載數(shù)據(jù)
   */
  @JavascriptInterface
  public void showcontacts() {
   // 下面的代碼建議在子線程中調(diào)用
   String json = "[{\"name\":\"阿福\", \"phone\":\"18600012345\"}]";
   // 調(diào)用JS中的方法
   webView.loadUrl("javascript:show('" + json + "')");
  }
  /**
   * 撥打電話
   * @param phone
   */
  public void call(String phone) {
   Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone));
//   startActivity(intent);
  }
 }

        6_h5頁面:

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Insert title here</title>
  <script type="text/javascript">
   function show(jsondata){   
     var jsonobjs = eval(jsondata);
     var table = document.getElementById("personTable");
     for(var y=0; y<jsonobjs.length; y++){
      var tr = table.insertRow(table.rows.length); 
      var td1 = tr.insertCell(0);
      var td2 = tr.insertCell(1);
      td2.align = "center";
      td1.innerHTML = jsonobjs[y].name;
      td2.innerHTML = "<a href='javascript:Android.call(\""+ jsonobjs[y].phone+ "\")'>"+ jsonobjs[y].phone+ "</a>";
     }
   }

  </script>
 </head>
 <body onload="javascript:Android.showcontacts()">

 <table border="0" width="100%" id="personTable" cellspacing="0">
   <tr>
    <td width="30%">姓名</td>
    <td align="center">電話</td>
   </tr>
  </table>


 </body>
</html>

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Jetpack?Compose實現(xiàn)對角線滾動效果

    Jetpack?Compose實現(xiàn)對角線滾動效果

    這篇文章主要為大家詳細(xì)介紹了如何利用Jetpack?Compose實現(xiàn)一個簡單的對角線滾動效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • Android自定義控件ScrollView實現(xiàn)上下滑動功能

    Android自定義控件ScrollView實現(xiàn)上下滑動功能

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件ScrollView實現(xiàn)上下滑動功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android實現(xiàn)加載廣告圖片和倒計時的開屏布局

    Android實現(xiàn)加載廣告圖片和倒計時的開屏布局

    這篇文章主要介紹了Android實現(xiàn)加載廣告圖片和倒計時的開屏布局,需要的朋友可以參考下
    2014-07-07
  • Android燒錄指令fastboot簡介

    Android燒錄指令fastboot簡介

    fastboot 是作為 Android 系統(tǒng)編譯器的客戶端,編譯后位于 ./out/host/?Linux?-x86/bin/fastboot 目錄下,這篇文章主要介紹了Android燒錄指令fastboot簡介,需要的朋友可以參考下
    2024-01-01
  • Android?WebView開發(fā)之自定義WebView工具框

    Android?WebView開發(fā)之自定義WebView工具框

    在WebView頁面長按時會彈出一個復(fù)制框,有的時候里面的item不是我們想要,這個時候我們就可以自定義一個工具框。本文就將介紹如何通過WebView自定義工具框,需要的朋友可以參考一下
    2021-12-12
  • Android自定義view實現(xiàn)倒計時控件

    Android自定義view實現(xiàn)倒計時控件

    這篇文章主要為大家詳細(xì)介紹了Android自定義view實現(xiàn)倒計時控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Android 開源在線音樂播放器

    Android 開源在線音樂播放器

    這篇文章主要介紹了Android 開源在線音樂播放器的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • android自定義view實現(xiàn)鐘表效果

    android自定義view實現(xiàn)鐘表效果

    這篇文章主要為大家詳細(xì)介紹了android自定義view實現(xiàn)鐘表效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • android 中ProgressDialog實現(xiàn)全屏效果的示例

    android 中ProgressDialog實現(xiàn)全屏效果的示例

    本篇文章主要介紹了android 中ProgressDialog實現(xiàn)全屏效果的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Android ViewFlipper簡單應(yīng)用

    Android ViewFlipper簡單應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Android ViewFlipper簡單應(yīng)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評論