1. 程式人生 > >webview中的img標籤載入Android本地的圖片

webview中的img標籤載入Android本地的圖片

在網上查了很多教程,感覺很麻煩,各種方法,最後最忌實踐很簡單,主要是兩步:

 WebSettings webSettings=webView.getSettings();
        //允許webview對檔案的操作
        webSettings.setAllowUniversalAccessFromFileURLs(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAllowFileAccessFromFileURLs(true);

其次是路徑的設定
String path= "file://"+Environment.getExternalStorageDirectory()+ File.separator+"123.jpg";

一定是file:///開頭,注意是三個斜槓

下面是結果:

執行程式碼之前

執行程式碼之後


html程式碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>Title</title>
</head>
<body>
<img id="img" alt="上海鮮花港 - 鬱金香" style="width: 100%;height: 100%"/>
<script>
function  aa(path){
alert(path);
 var img=document.getElementById("img");
    img.src=path;
}

</script>
</body>
</html>
Android程式碼
package com.example.a5.myapplication;

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

import java.io.File;

public class MainActivity extends AppCompatActivity {
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView= (WebView) findViewById(R.id.webView);
        WebSettings webSettings=webView.getSettings();
        //允許webview對檔案的操作
        webSettings.setAllowUniversalAccessFromFileURLs(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAllowFileAccessFromFileURLs(true);
        //用於js呼叫Android
        webSettings.setJavaScriptEnabled(true);
        //設定編碼方式
        webSettings.setDefaultTextEncodingName("utf-8");
        webView.setWebChromeClient(new chromClient());
        //訪問Android assets資料夾內的
        String url="file:///android_asset/test.html";
        //訪問網頁Html
//        String url="http://192.168.1.121:8080/jsandroid/index.html";
        runWebView(url);

    }
    private class chromClient extends WebChromeClient{
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            if(newProgress==100){
                //頁面載入完成執行的操作
                String path= "file://"+Environment.getExternalStorageDirectory()+ File.separator+"123.jpg";
                String action="javascript:aa('"+path+"')";
                new AlertDialog.Builder(MainActivity.this)
                        .setMessage(action)
                        .show();
                runWebView(action);
            }
            super.onProgressChanged(view, newProgress);
        }
    }

    private void runWebView(final String url){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                webView.loadUrl(url);
            }
        });
    }
}



相關推薦

webviewimg標籤載入Android本地圖片

在網上查了很多教程,感覺很麻煩,各種方法,最後最忌實踐很簡單,主要是兩步: WebSettings webSettings=webView.getSettings(); //允許webview對檔案的操作 webSettings.setAl

關於htmlimg標籤圖片無法載入問題

html中img標籤中圖片地址只能為: 1. 絕對路徑 2. 相對路徑 3. URL(包括協議) 其中,當專案訪問外部專案image時必須為完整的url,如果出現im

[Android]Html.from()ImageGetter非同步載入並顯示圖片和替換標籤處理效果

非同步載入圖片:先返回一個LevelListDrawable,之後載入圖片,獲取到Bitmap之後轉為Drawable,並設定到之前的LevelListDrawable中,更新level。這裡要注意,要重新設定一下Textview的text,不然圖片顯示不出來。 publ

js處理img標籤載入圖片失敗,顯示預設圖片

1.第一種方法:  如果已經引入了jquery外掛,就很好辦。沒有的話,如果實在需要,可以附上程式碼:     script(type='text/javascript', src="http://ajax.googleapis.com/ajax/libs/jquery/1

ajax請求二進位制流圖片並渲染到htmlimg標籤

說明 後臺返回圖片二進位制流,需要使用get請求獲取返回結果,並且將返回的二進位制流以圖片形式顯示在頁面img中。 但是日常顯示圖片都諸如這種形式: <img src="圖片路徑、地址" alt="" /> 以上需求不能將後端地址直接

img標籤src引用網路圖片,頁面不顯示,返回403錯誤,網路圖片地址在瀏覽器能載入,放html卻不能顯示

在html頁面加入<meta name="referrer" content="no-referrer">標籤,就可以解決頁面載入網路圖片的問題,原因大概是網路安全的問題,別人的頁面做了安全防護的問題。<head> <meta chars

android的ContentResolver獲取手機本地圖片

獲取手機的本地圖片就是使用ContentResolver類查詢本地的資料庫,只不過需要使用該類進行查詢,並且該類中提供了增刪改查的響應的方法。本篇博文並不對ContentResolver進行詳細的介紹,相比大家在書上面已經瞭解到了ContentResolver的

剖析Picasso載入壓縮本地圖片流程(解決Android 5.0部分機型無法載入本地圖片的問題)

public int read() throws IOException {     if (!this.allowExpire && this.offset + 1L > this.limit) {         this .setLimit(this.limit + (

IE瀏覽器img標籤不顯示圖片

一、問題描述瀏覽器< img … /> 標籤不顯示圖片二、示例演示<!-- 程式碼部分 --> <html> <head> <meta charset="UTF-8"> <

分享工作img標籤的一種用法

分享最近工作中載入圖片的一種方法: 如圖,背景圖片的url裡的路徑,先來解釋一下,data表示取得資料的協定名稱,image/png是資料型別名稱,base64是資料編碼方式,後邊的一堆是image/png檔案編碼後的資料.這是一種 Data URL scheme模式 目前Data U

Android 本地圖片快取

廢話 每次從記憶體裡面讀圖片,圖片小的話還好,圖片大的話比較吃力,速度慢不說,還容易因為記憶體問題出現崩潰。 後來加上了快取,從快取中讀取,結果發現,還是會爆炸,檢查一下發現,一張拍照3M多,直接把整個快取區都炸開了,既然找到問題了,也就好解決了。 所以就加上了個壓縮,邏輯是:1-

C#正則表示式提取HTMLIMG標籤的SRC地址

原文:http://blog.csdn.net/smeller/article/details/7108502 一般來說一個 HTML 文件有很多標籤,比如“<html>”、“<body>”、“<table>”等,想把文件中的 img 標籤提取出來並不

HTMLimg標籤的src屬性絕對路徑問題解決辦法,完全解決!

需求:有時候自己的專案img的src路徑需要用到本地某資料夾下的圖片,而不是直接使用專案根目錄下的圖片。 場景:eclipse,tomcat,html,img,src,java 注意:不需要尋找tomcat真實路徑下的server.xml去修改,這個地方不需要修改。 解決辦法:1、在ec

webpack 處理htmlimg的src引入的圖片

webpack在管理模組,處理各種資源上都是無往不利,但唯獨在處理html上比較困難,不識別html中img標籤src引入的圖片。  html-webpack-plugin這種外掛輔助處理html非常好,但卻仍然未解決html程式碼中的圖片問題,未免美中不足。在遍尋開源模

Android本地圖片上傳(拍照+相簿)

執行效果圖:     Android端程式碼MainActivity:public class MainActivity extends Activity implements OnClickListener, OnUploadProcessListener { private static

使用開源imageLoader優化listview載入大量本地圖片的demo

package com.example.listviewdemo; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.uti

關於image標籤無法獲取本地圖片

If you have stored images in a path outside of the web container or in a database, then the client cannot access the images directly by a

DOM與jQueryimg標籤的src

     今天,在做一個驗證碼的時候,出現了一個問題。 驗證碼:<input type="text" name="icode"><a href="javascript:voi

HTMLimg標籤src路徑的值需要設定成一個變數來表示

在Java開發中,有時候會遇到在顯示圖片時不需要給圖片的src路徑設定成固定的,而是需要寫入從後臺資料庫傳入的路徑變數,下面給出瞭解決此問題的方法。<script> var pictureUrl = data.url;//後臺傳入的圖片路徑,url指的是資料

正則表示式提取HTMLIMG標籤的SRC地址

一般來說一個 HTML 文件有很多標籤,比如“<html>”、“<body>”、“<table>”等,想把文件中的 img 標籤提取出來並不是一件容易的事。由於 img 標籤樣式變化多端,使提取的時候用程式尋找並不容易。於是想要尋找它們就