Загрузите изображение, сохраненное в SDCard, в веб-браузере - PullRequest
17 голосов
/ 19 февраля 2011

Используется следующий код

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptEnabled(true);
String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
String imagePath = base + "/test.jpg";  
mWebView.loadUrl(imagePath);

изображение не загружается ...

также пытался

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
String imagePath = base + "/test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadData(html, "text/html","utf-8");

Пожалуйста, помогите

Ответы [ 3 ]

52 голосов
/ 20 февраля 2011
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
String imagePath = "file://"+ base + "/test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadDataWithBaseURL("", html, "text/html","utf-8", "");  

Это добилось цели, так как мы должны добавить файл "prefix" file: // "перед любым файлом, чтобы отобразить его в веб-представлении

2 голосов
/ 19 февраля 2011

WebViews может отображать HTML, а не изображения. Вам нужно либо использовать ImageView, либо сгенерировать HTML-код с тегом изображения, который отображает ваше изображение. Если он должен быть динамическим, вы можете сгенерировать его как String и использовать метод loadData () для его отображения.

Редактировать: Вы захотите что-то подобное в вашей HTML-строке.

String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString(); 
String imagePath = base + "/test.jpg"; 
String html = ("<html>
                <head>
                </head>
                <body>
                <img src=\""+ imagePath + "\">
                </body>
                </html>
                "); 
mWebView.loadData(html, "text/html","utf-8");
0 голосов
/ 02 февраля 2018

Я попробовал методы, упомянутые ранее, но безуспешно, поэтому вот варианты, которые сработали для меня, чтобы загрузить изображение из внешнего хранилища:

Загрузка изображения непосредственно в WebView.

Предполагается, что у меня есть изображение с именем image.jpg внутри корня каталога внешнего хранилища (в моем случае /storage/emulated/0/image.jpg).

  String pathExternalStorage = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
  String imagePath = pathExternalStorage + "/" + "imagen.jpg";

    /*

    //We can chek if the file really exists. 
    File archivo = new File(imagePath);
    if(archivo.exists()){
        Log.i("TAG" , "EXISTS " + imagePath);
    }else{
        Log.e("TAG" , "DOESN´T EXISTS " +imagePath );
    }
    */

  String imagePath = "file://" + imagePath;
  webView.loadUrl(imagePath);

Загрузка изображения с использованием HTML-шаблона для загрузки в WebView.

 String pathExternalStorage = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
 String imagePath = pathExternalStorage + "/" + "image.jpg";

String imagePathWV = "file://" + imagePath;
String html = ("<html><head></head><body><img src=\""+ imagePathWV + "\"></body></html>");
webView.loadDataWithBaseURL(null, html, "text/html","utf-8",null);

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...