国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

安卓WebView的使用

這篇具有很好參考價(jià)值的文章主要介紹了安卓WebView的使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、WebView簡介

????????WebView是Android中的原生UI控件,主要用于在app應(yīng)用中方便地訪問遠(yuǎn)程網(wǎng)頁或本地html資源。同時(shí),WebView也在Android中充當(dāng)Java代碼和JS代碼之間交互的橋梁。實(shí)際上,也可以將WebView看做一個(gè)功能最小化的瀏覽器。

????????安卓官方WebView接口文檔

二、安卓交互功能封裝

????????通過Android Studio將WebView相關(guān)調(diào)用接口封裝成AAR包,以供后續(xù)Unity調(diào)用。

1、新建安卓工程

(1)創(chuàng)建工程

????????使用Android Studio創(chuàng)建新工程,選擇為Empty Activity。

android webview使用,安卓,Unity,android,webview,unity

(2)選項(xiàng)配置

????????設(shè)置一下Name及Package name,注意一下Language是否選擇Java。

android webview使用,安卓,Unity,android,webview,unity

?2、創(chuàng)建模塊

????????創(chuàng)建用于封裝AAR包的模塊。選中工程名,右鍵New-->Module。例如本項(xiàng)目創(chuàng)建名為WebView的模塊。

????????注意,模塊包名要與工程的包名一致。

android webview使用,安卓,Unity,android,webview,unity

android webview使用,安卓,Unity,android,webview,unity

?3、Java類創(chuàng)建

(1)創(chuàng)建方法調(diào)用類

????????選中WebView模塊-->src-->main-->java-->包名(com.xx.xx),右鍵New-->Java Class,創(chuàng)建名為MainActivity的方法調(diào)用Java類,內(nèi)部寫好供Unity調(diào)用的方法。寫入以下代碼。

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class MainActivity extends Activity{
    private Context mContext;
    private static MainActivity mMainActivity = null;

    public MainActivity(Context context) {
        this.mContext = context;
    }


    public static MainActivity getInstance(Context context){
        if (mMainActivity == null) {
            mMainActivity = new MainActivity(context);
        }
        return mMainActivity;
    }

    //Unity中會(huì)調(diào)用這個(gè)方法,從而開打WebView
    public void StartWebView(String url,String label)
    {
        printLog("Welcome");
        WebViewActivity.openUrl = url;
        WebViewActivity.activityLabel = label;
        Intent intent = new Intent(this.mContext,WebViewActivity.class);
        this.mContext.startActivity(intent);
    }

    public boolean showToast(String content){
        Toast.makeText(this.mContext,content,Toast.LENGTH_SHORT).show();
        return true;
    }

    private void printLog(String s){
        //Log.d("vivian",s);
        showToast(s);
    }
}

(2)創(chuàng)建WebView調(diào)用類

????????同樣的方式,在MainActivity同級(jí)目錄里創(chuàng)建名為WebViewActivity的WebView調(diào)用類,用于開啟WebView。寫入以下代碼。

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.Button;

public class WebViewActivity extends Activity {
    public static String openUrl;//需要打開的鏈接
    public static String activityLabel;//鏈接對(duì)應(yīng)的Title,顯示在WebView的標(biāo)題欄
    private WebView webView;
    private Button close;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle(activityLabel);//設(shè)置鏈接的Title
        setContentView(R.layout.activity_webview);

        webView = (WebView) findViewById(R.id.WebView);
        webView.loadUrl(openUrl);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());

        close = (Button) findViewById(R.id.CloseButton);
        close.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                WebViewActivity.this.finish();
            }
        });
    }

    private class WebViewClient extends android.webkit.WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            WebView.HitTestResult hit = view.getHitTestResult();
            //hit.getExtra()為null或者h(yuǎn)it.getType() == 0都表示即將加載的URL會(huì)發(fā)生重定向,需要做攔截處理
            if (TextUtils.isEmpty(hit.getExtra()) || hit.getType() == 0) {
                //通過判斷開頭協(xié)議就可解決大部分重定向問題了,有另外的需求可以在此判斷下操作
                Log.e("重定向", "重定向: " + hit.getType() + " && EXTRA()" + hit.getExtra() + "------");
                Log.e("重定向", "GetURL: " + view.getUrl() + "\n" +"getOriginalUrl()"+ view.getOriginalUrl());
                Log.d("重定向", "URL: " + url);
            }

            if (url.startsWith("http://") || url.startsWith("https://")) {//加載的url是http/https協(xié)議地址
                view.loadUrl(url);
                return false; //返回false表示此url默認(rèn)由系統(tǒng)處理,url未加載完成,會(huì)繼續(xù)往下走

            } else { //加載的url是自定義協(xié)議地址
                try {
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(intent);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return true;
            }
        }
    }
}

4、AndroidManifest.xml文件配置

????????在AndroidManifest.xml文件里配置創(chuàng)建的Java類及權(quán)限。

????????模塊創(chuàng)建后默認(rèn)寫入了一些內(nèi)容,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

</manifest>

????????在WebView模塊-->src-->main下打開AndroidManifest.xml,寫入以下內(nèi)容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="包名">
    <application
        android:usesCleartextTraffic="true">
        <activity android:name=".MainActivity">

        </activity>
        <activity android:name=".WebViewActivity"
            android:label="@string/activity_name">
        </activity>
    </application>
    <!-- 連接互聯(lián)網(wǎng)的權(quán)限 -->
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

5、創(chuàng)建res文件夾

????????選中WebView模塊-->src-->main,右鍵New-->Directory,在彈窗里選擇res,雙擊創(chuàng)建。

android webview使用,安卓,Unity,android,webview,unity

?

????????res文件夾后續(xù)用來存儲(chǔ)布局文件及一些字符串配置文件。

????????創(chuàng)建后的目錄層級(jí)如下:

android webview使用,安卓,Unity,android,webview,unity

?6、創(chuàng)建WebView布局文件

????????布局文件用于WebView界面布局設(shè)計(jì)。選中res文件夾,右鍵New-->Directory,在彈窗里輸入layout,回車創(chuàng)建。

android webview使用,安卓,Unity,android,webview,unity

????????創(chuàng)建完畢后,選中l(wèi)ayout,右鍵New-->Layout Resource File,在彈窗里輸入activity_webview(名字根據(jù)自己的上下文自定義),點(diǎn)擊OK創(chuàng)建布局文件。

????????將界面選擇為Code后,寫入以下內(nèi)容:

android webview使用,安卓,Unity,android,webview,unity

?

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

    <WebView
        android:id="@+id/WebView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        />

    <Button
        android:id="@+id/CloseButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:backgroundTint="#009688"
        android:text="返回"
        android:textColor="#FFFFFF"
        android:textColorHint="#000000" />
</LinearLayout>

7、創(chuàng)建strings.xml文件

?????????選中res文件夾,右鍵New-->Directory,在彈窗里輸入values,回車創(chuàng)建。

android webview使用,安卓,Unity,android,webview,unity

?????????創(chuàng)建完畢后,選中values,右鍵New-->File,在彈窗里輸入strings.xml后,回車創(chuàng)建。

android webview使用,安卓,Unity,android,webview,unity

?????????創(chuàng)建完畢,打開strings.xml文件,寫入以下內(nèi)容:

<resources>
    <string name="activity_name">B站</string>
</resources>

????????strings.xml文件用于設(shè)置WebView界面的標(biāo)題,在WebViewActivity中動(dòng)態(tài)修改其值。

8、修改編譯和目標(biāo)SDK

????????在WebView模塊中,找到并打開build.gradle文件,將compileSdk和targetSdk修改為31或以上。

android webview使用,安卓,Unity,android,webview,unity

?????????因?yàn)楹罄m(xù)構(gòu)建release版本AAR包時(shí),需要31或以上版本的SDK。

9、修改Build變量為release

????????點(diǎn)擊Build-->Select Build Variant...,在打開的界面中將WebView模塊的Build Variant選擇為release。

android webview使用,安卓,Unity,android,webview,unity

?10、針對(duì)AAR包混淆處理

(1)build.gradle修改

????????在WebView模塊中,找到并打開build.gradle文件,將buildTypes中release塊的minifyEnabled修改為true。

android webview使用,安卓,Unity,android,webview,unity

?(2)混淆文件修改

????????在WebView模塊中,找到并打開proguard-rules.pro文件,寫入以下內(nèi)容:

-keep class 包名.MainActivity{public <methods>;}

????????此處是為了保持MainActivity中的public方法不被混淆處理,避免供Unity調(diào)用的方法混淆。若不加以限制,Unity將無法調(diào)用到AAR包里的方法。

11、構(gòu)建AAR包

????????選中WebView模塊,點(diǎn)擊Build-->Make Module,或者直接Build-->Rebuild Project。

????????待編譯完成后,在WebView模塊-->build-->outputs-->aar里便可找到編譯好的AAR包。

android webview使用,安卓,Unity,android,webview,unity

?三、Unity調(diào)用

1、AAR包放置

????????直接將AAR包拖放至Unity的Assets-->Plugins-->Android路徑下。

android webview使用,安卓,Unity,android,webview,unity

?2、創(chuàng)建C#腳本,調(diào)用AAR包

????????寫入以下內(nèi)容,用來調(diào)用AAR包里的函數(shù)接口。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SetWebViewUtils : MonoBehaviour
{
    private AndroidJavaObject setWebViewUtils;
    private string activityLabel;//安卓端Activity的Label,即打開的鏈接在WebView中的標(biāo)題
    
    // Start is called before the first frame update
    void Start()
    {
        AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaClass openAppUtilsClass = new AndroidJavaClass("包名.MainActivity");
        setWebViewUtils = openAppUtilsClass.CallStatic<AndroidJavaObject>("getInstance", currentActivity);
    }

    //設(shè)置WebView的標(biāo)題
    public void SetTitle(string label)
    {
        activityLabel = label;
    }

    //打開WebView
    public void SetWebView(string url)
    {
        setWebViewUtils.Call("StartWebView", url, activityLabel);
    }
}

3、調(diào)用測(cè)試

????????在Unity編輯器里創(chuàng)建三個(gè)按鈕,用來打開三個(gè)不同的鏈接。

android webview使用,安卓,Unity,android,webview,unity

????????將SetWebViewUtils腳本掛載至場(chǎng)景物體上。

????????三個(gè)按鈕的調(diào)用方式如下,通過傳入標(biāo)題名稱及需要打開的鏈接地址來打開相應(yīng)的WebView。

android webview使用,安卓,Unity,android,webview,unity

android webview使用,安卓,Unity,android,webview,unity

android webview使用,安卓,Unity,android,webview,unity

?4、切換至安卓平臺(tái),打包apk,安裝測(cè)試便可

四、AAR包資源下載入口

? ? ? ? 如果有小伙伴看了以上教程還不知道如何封包,可以直接下載以下AAR包直接使用,里面有插件的包名,替換掉SetWebViewUtils腳本里的“包名”便可。

????????AAR包下載入口文章來源地址http://www.zghlxwxcb.cn/news/detail-698842.html

到了這里,關(guān)于安卓WebView的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android之 WebView的使用

    Android之 WebView的使用

    一 簡介 1.1 WebView是用來展示網(wǎng)頁的控件,底層是google的WebKit的引擎。 比起蘋果的WebView,webkit一些不足地方: 不能支持word等文件的預(yù)覽 純標(biāo)簽加載,并不支持所有標(biāo)簽的加載 不支持文件的下載,圖片的放大,都要單獨(dú)處理 1.2 其它Web引擎,騰訊的webx5,其功能比WebKit要強(qiáng)大

    2024年02月12日
    瀏覽(15)
  • Android使用WebView打開外部網(wǎng)頁鏈接

    Android使用WebView打開外部網(wǎng)頁鏈接

    發(fā)布Android應(yīng)用,除了用原生開發(fā)外,更多是采用內(nèi)嵌H5網(wǎng)頁的方式來做,便于更新以及多平臺(tái)使用。 一、第一種方式是直接通過WebView打開外部H5鏈接。 新建Android工程 直接創(chuàng)建一個(gè)工程,點(diǎn)擊運(yùn)行就可以了,打開是個(gè)空頁面。 關(guān)于如何在AndroidStudio里安裝AVD虛擬機(jī),請(qǐng)看另外

    2024年04月24日
    瀏覽(20)
  • Android項(xiàng)目在 app 中通過 WebView 訪問 url顯示空白,使用瀏覽器可以打開,Android WebView加載出現(xiàn)空白頁面問題解決

    Android項(xiàng)目在 app 中通過 WebView 訪問 url顯示空白,使用瀏覽器可以打開,Android WebView加載出現(xiàn)空白頁面問題解決

    服務(wù)器證書校驗(yàn)主要針對(duì) WebView 的安全問題。 在 app 中需要通過 WebView 訪問 url,因?yàn)榉?wù)器采用的自簽名證書,而不是 ca 認(rèn)證,使用 WebView 加載 url 的時(shí)候會(huì)顯示為空白,出現(xiàn)無法加載網(wǎng)頁的情況。 使用 ca 認(rèn)證的證書,在 WebView 則可以直接顯示出來,不需要特殊處理。 以往

    2024年02月04日
    瀏覽(30)
  • Android中使用WebView與JS交互全解析

    Android中使用WebView與JS交互全解析

    首先,需要提出一個(gè)概念,那就是hybrid,主要意思就是native原生Android和h5混合開發(fā)。為什么要這樣做呢?大家可以想象一下針對(duì)于同一個(gè)活動(dòng),如果使用純native的開發(fā)方式,Android和iOS兩邊都要維護(hù)同一套界面甚至是邏輯,這樣開發(fā)和維護(hù)的成本會(huì)很大,而使用hybrid的開發(fā)方式

    2024年04月09日
    瀏覽(20)
  • Android 使用webView打開網(wǎng)頁可以實(shí)現(xiàn)自動(dòng)播放音頻

    Android 使用webView打開網(wǎng)頁可以實(shí)現(xiàn)自動(dòng)播放音頻

    使用webview 自動(dòng)播放音視頻,場(chǎng)景如,流媒體自動(dòng)部分,音視頻通話等。會(huì)出現(xiàn)如下問題: ? 解決方案如下: 配置webview 如下,這樣可以自動(dòng)播放音頻。

    2024年02月12日
    瀏覽(32)
  • 已解決:H5移動(dòng)端網(wǎng)頁實(shí)現(xiàn)錄音功能,js實(shí)現(xiàn)錄音功能,包括安卓webview接口也可以使用

    已解決:H5移動(dòng)端網(wǎng)頁實(shí)現(xiàn)錄音功能,js實(shí)現(xiàn)錄音功能,包括安卓webview接口也可以使用

    遇到一個(gè)需求,需要做一個(gè)手機(jī)網(wǎng)頁錄音的功能,嵌入到webview中去,用安卓原生錄音倒是可以,但是想著盡量去安卓化開發(fā),就想著用純的js前端代碼去實(shí)現(xiàn)錄音功能。 在 Web 應(yīng)用程序中,JavaScript 是運(yùn)行在瀏覽器中的客戶端腳本語言,不具有直接訪問設(shè)備硬件的能力。因此

    2024年02月07日
    瀏覽(26)
  • 安卓監(jiān)聽WebView加載失敗以及獲取WebView異常的errorCode和errorMessage

    注意:?WebViewClient 的 onReceivedError()方法要根據(jù)安卓版本做版本兼容,android 6.0及以上回調(diào)上面的方法,如果是6.0以下,回調(diào)下面的函數(shù)。

    2024年02月07日
    瀏覽(25)
  • react-native-webview使用postMessage后H5不能監(jiān)聽問題(iOS和安卓的兼容問題)

    react-native-webview使用postMessage后H5不能監(jiān)聽問題(iOS和安卓的兼容問題)

    ?chatgpt: https://chat.xutongbao.top/ 參考鏈接: https://blog.csdn.net/liuxingyuzaixian/article/details/125199131 https://chat.xutongbao.top/

    2024年02月12日
    瀏覽(27)
  • Android中使用Webview SSL 自簽名CA證書安全校驗(yàn)方案

    前言:? ? ? ????????因?yàn)槲覀兊捻?xiàng)目是Android + H5,之前的做法是把H5所需要的資源和html下載到本地這樣證書校驗(yàn)不會(huì)走系統(tǒng)瀏覽器層只需要項(xiàng)目中預(yù)埋根證書就可以了,但是如果 用webview加載線上的域名自簽名證書就會(huì)走系統(tǒng)級(jí)校驗(yàn)在onReceivedSslError中返回ssl證書不受信,

    2024年02月13日
    瀏覽(41)
  • Android使用WebView與Native交互的三種方式 ( 附源碼 )

    Android使用WebView與Native交互的三種方式 ( 附源碼 )

    javascript.html: jsToAndroid.html jsToAndroid2.html 1.JS與Native的交互 一.Android調(diào)用JS的方法 目前學(xué)習(xí)了倆種方法:1. 調(diào)用webview的loadUrl 2.調(diào)用webview的evaluateJavascript 方法說明: 1. webView.loadUrl(“javascript:callJS()”); 參數(shù)是一個(gè)字符串,說明調(diào)用了javascript中的 callJS方法 webview.evaluateJavascript(

    2024年02月11日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包