1. 程式人生 > >android與h5互調

android與h5互調

Java程式碼與H5互調

介面佈局就不說了,一個按鈕

主要是核心程式碼

package com.example.androi_h5;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class JavaAndJSActivity extends Activity implements View.OnClickListener {

    private EditText etNumber;
    private EditText etPassword;
    private Button btnLogin;

    private WebView webView;

    private void findViews() {
        setContentView(R.layout.activity_java_and_js);
        etNumber = (EditText) findViewById(R.id.et_number);
        etPassword = (EditText) findViewById(R.id.et_password);
        btnLogin = (Button) findViewById(R.id.btn_login);
        btnLogin.setOnClickListener(this);
        initWebView();
    }

    private void initWebView() {
        webView = new WebView(this);
        WebSettings settings = webView.getSettings();

        settings.setJavaScriptEnabled(true);

        webView.setWebViewClient(new WebViewClient());

        webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android" );
//        webView.loadUrl("http://www.atguigu.com/");
        //載入本地
        webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html");
        setContentView(webView);
    }

    /**
     * js可以呼叫該類的方法
     */
    class AndroidAndJSInterface{
        @JavascriptInterface
        public void showToast(){
            Toast.makeText(JavaAndJSActivity.this, "我被js呼叫了", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_java_and_js);
        findViews();
    }

    @Override
    public void onClick(View view) {
        if (view == btnLogin) {
          login();
        }
    }

    private void login() {
        String numebr = etNumber.getText().toString().trim();
        String password = etPassword.getText().toString().trim();
        if (TextUtils.isEmpty(numebr) || TextUtils.isEmpty(password)) {
            Toast.makeText(JavaAndJSActivity.this, "賬號或者密碼為空", Toast.LENGTH_SHORT).show();
        } else {
            //登入
            login(numebr);
        }
    }
    private void login(String numebr) {
        webView.loadUrl("javascript:javaCallJs(" + "'" + numebr + "'" + ")");
        setContentView(webView);
    }
}

這是載入本地的html,放在assets目錄下的

<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呼叫了js無參函式";
	}
	
	function javaCallJs(arg){
		 document.getElementById("content").innerHTML =
	         ("歡迎:"+arg );
	}
	
	
   function showDialog(){
      alert("穀粉們你好,我是來自javascript");
   }
   





    </script>


</head>


<body>

<div align="left" id="content"> 穀粉</div>
<div align="right">光臨尚矽谷</div>

<p><img src="http://atguigu.com/images/logo.gif"></p>


<input type="button" value="點選Android被呼叫" onclick="window.Android.showToast()" />

</body>


</html>

佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@android:color/holo_blue_light"
        android:gravity="center">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登入頁面"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="10dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_shap"
            android:orientation="vertical"
            android:padding="5dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="賬號:"
                android:textColor="#000000" />

            <EditText
                android:id="@+id/et_number"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="請輸入賬號..."
                android:textColor="#000000" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="密碼:"
                android:textColor="#000000" />

            <EditText
                android:id="@+id/et_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="請輸入密碼..."
                android:password="true"
                android:textColor="#000000" />

            <Button
                android:id="@+id/btn_login"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="登入"
                android:textColor="#000000"
                android:textSize="25sp" />

        </LinearLayout>
    </LinearLayout>

</LinearLayout>

記得加上聯網許可權

相關推薦

AndroidH5調(通過實例來了解Hybrid App)

ext 傳感器 顯示 相同 blank show ima 一次 點擊 前些日子,Android原生開發將被取締的吵得火熱,JavaScript是能做一個完全的APP,但只使用JavaScript做出來的APP也不會牛逼到哪裏去。最好的是混合(Hybrid)開發,在需要的

androidh5調

Java程式碼與H5互調 介面佈局就不說了,一個按鈕 主要是核心程式碼 package com.example.androi_h5; import android.app.Activity; import android.os.Bundle; import andro

WebView詳解簡單AndroidH5調

為什麼要學習Android與H5互調? 微信,QQ空間等大量軟體都內嵌了H5,不得不說是一種趨勢。Android與H5互調可以讓我們的實現混合開發,至於混合開發就是在一個App中內嵌一個輕量級的瀏覽器,一部分原生的功能改為Html 5來開發。  優勢:使用H5實現的功能能夠在不升級App的情況下動態更

WebView詳解簡單實現AndroidH5調

本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 為什麼要學習Android與H5互調? 微信,QQ空間等大量軟體都內嵌了H5,不得不說是一種趨勢。Android與H5互調可以讓我們的實現混合開發,至於混合開發就是在一個App中內嵌

【轉】AndroidH5調

原文地址:http://blog.csdn.net/hpc19950723/article/details/70881226 前言         微信,微博,微商,QQ空間,大量的軟體使用內嵌了H5,這個時候就需要了解Android如何更H5互動的了;有些外包公司,

androidh5調

前言 微信,微博,微商,QQ空間,大量的軟體使用內嵌了H5,這個時候就需要了解Android如何更H5互動的了;有些外包公司,為了節約成本,採用Android內嵌H5模式開發,便於在IOS上直接複用頁面,最終解決成本。 效果圖: 還有其他4中情況,

AndroidH5調案例基礎詳解

混合開發概述 微信,微博以及現在市面上大量的軟體使用內嵌了H5頁面;有些外包公司,為了節約成本,採用Android內嵌H5模式開發,便於在iOS上直接複用頁面, 從而提高開發效率。 實現的原理

AndroidJS調的簡單使用

在專案開發過程中有時會遇到WebView在載入Js頁面時,網頁上的一些邏輯要通知Android本地進行簡單的UI互動或者引數的實時傳遞,那麼就需要我們在Android程式的程式碼裡實現相應的互調配置,以達到互調的效果。下面我直接通過程式碼實現: JS呼叫Andr

unity中webglh5調

unity呼叫H5: Application.ExternalCall(functionName, params object[] args); 第一個引數是H5中的方法名,第二個引數是H5中方法的引數(可變引數) H5呼叫unity裡的方法(在打包出來的index

androidh5之間的調

android與h5之間的互調 最近android專案中用到了與html之間的互動,總結了一下,還是比較全的,主要有 java呼叫js函式,js呼叫java函式,瀏覽器中通過連結開啟app - Android和H5互調-java呼叫js private void initW

Android H5 之間的調

目錄 1. 前言 2. 簡介 3. 效果 4. 程式碼 5. 總結 1.前言 在APP的開發中嵌入了H5頁面,這樣就可以在Android和iOS系統上跑,大大節約了成本。因此作為移動端開發者,一定要學會使用手機系統與H5頁面的互調,下面介紹一下An

AndroidH5介面的互動(引數傳)以及遇到的一些問題

前言 在開發專案時,有部分介面是H5介面,原本以為直接載入H5介面就能搞定,後來還是遇到引數互傳問題了,然後網上意見不一,只好自己摸索,下面就給大家聊聊我遇到的問題~~~ 1.先給大家看看成功之後的介面跳轉: 解釋一下: 介面跳轉流程: 首頁的限時

移動端(ios and android)長按識別二維碼(含js原生調

這篇文章就整理下移動端長按識別二維碼的實現吧!實現方式可以分為三種 第一二種好像沒多少可以說的,但還是按照順序來吧!首先先說下使用的庫,ios使用原生二維碼識別庫(好像是ios7之後才有的),然後說是WKWebView比UIWebView優化了很多 東西,也解決了記

AndroidH5 單獨調起拍照攝像

一:    公司程式碼需求,要求使用者在H5內上傳視訊的時候必須是剛拍攝的。這就需要我們在調起相機的時候只調起拍攝,並且不能有BROWSER出現。    1、單獨調起拍照:    // 啟用系統的照相機進行拍照 Intent intent = new Intent();

Android中JsJava調

       在android的開發過程中,有很多時候需要用到本地java程式碼和javascript進行互動。android對互動進行了很好的封裝,在開發中我們可以很簡單的用java程式碼呼叫webview中的js,也可以用webview中的js來呼叫本地的java程式碼,這樣我們可以實現很多原來做不了的功

安卓JS調android webview addJavascriptInterface 的方法不能呼叫

以前一直覺著用HTML5做Android app是一件很雞肋的事(勿噴,請恕小的見識少)。 後來又發現很多大公司做的app中都或多或少的使用了html元素,比如微信、qq之類。 最近在網上閒逛發現一個IDE可以使用純html js css設計app併發布到多個平臺,並

AndroidJS互相調用以及註意

import 調用 spa sha 技術 作用 zhang ces wan 近期項目中常常使用Html5而Android與JS調用常常會用到,這裏記錄一下,測試系統5.0以上。這裏先貼一下源代碼Activity:package jwzhangjie.com.webview

android ios vue 調

android ios vue 1、Vue調用android,ios Vue:openContacts:function(){window.nativeObj.openContacts()} android:Webview.addJavascriptInterface(contactsIn

webview JavaJS調

 Android呼叫JS:方法一 webView.loadUrl("javascript:show('"+info+"')"); Android呼叫JS:方法二  //第一個引數為js中的方法名,該段程式碼每執行一次則呼叫js方法一次 progressWebView.

AndroidH5相機、相簿筆記

公司專案中android內嵌H5頁面,H5頁面需要選擇上傳圖片功能。H5的標籤無法調起android照相機和相簿功能,所以只能android進行處理。本人第一次做,借鑑網上諸多的程式碼,總結如下: