7

处理文件后,我得到一个 HTML 字符串,其中图像设置为

<img src="abc.001.png" width="135" height="29" alt="" style="margin-left:0pt; margin-top:0pt; position:absolute; z-index:-65536" />

不应修改图像的路径,因为我必须从列表中选择文件项。图像与文件位于同一目录中。我使用 loadData/loadDataWithBaseURL 加载 HTML 字符串,但没有显示图像。我只看到它的框架。

我怎样才能解决这个问题?如果我有许多索引为 .001.jpg、.002.png 等的图像,我可以应用该解决方案吗?(都在一个目录中)?

更新:谢谢,无论我如何命名图像,它都适用于 loadUrl() 语句。事实上,在将内容加载到 WebView 之前,我必须阅读和处理内容。这就是我使用 loadDataWithBaseUrl() 语句并遇到上述问题的原因。这是我在测试项目中读取和显示Test.html内容的代码。

    String res = "";        
    File file = new File(Environment.getExternalStorageDirectory()+"/Test.html");
    try {
        FileInputStream in = new FileInputStream(file);

        if (in != null) {               
            BufferedReader buffreader = new BufferedReader(
                    new InputStreamReader(in));
            String line;
            while ((line = buffreader.readLine()) != null) {
                res += line;
            }
            in.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }       
    wv.loadDataWithBaseURL(null, res, "text/html", "utf-8", null);
  //wv.loadUrl("file://"+Environment.getExternalStorageDirectory()+"/Test.html");

// 中的语句有效,但这不是我在实际项目中可以做的。我有一个解决方案:处理完内容后,我必须将其保存在一个临时 HTML 文件中,然后加载它,该文件稍后将被删除。但是,我仍然期待更好的解决方案:)

4

4 回答 4

9

尝试更改图像文件的名称。我认为这是因为名称中有双点。

<img id="compassRose" src="CompassRose.jpg"></img>

这对我有用....

代码:

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebView;

public class StackOverFlowActivity extends Activity {

    private Handler mHandler = new Handler();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WebView view=(WebView)findViewById(R.id.webView1);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl("file:///android_asset/index.html");
        view.addJavascriptInterface(new MyJavaScriptInterface(), "Android");
    }

    final class MyJavaScriptInterface
    {
        public void ProcessJavaScript(final String scriptname, final String args)
            {             
                mHandler.post(new Runnable()
                    {
                        public void run()
                            {
                                //Do your activities
                            }
                    });
            }
    }
}

索引.html:

<html>
<head>
  <title title="Index"></title>                                   
</head>

<body>
  <h2>Android App demo</h2>
  <br /> <img src="CompassRose.jpg" />
</body>
</html>

在此处输入图像描述

结果:

在此处输入图像描述

于 2012-05-22T11:44:22.837 回答
3

只需使用:

webview.loadUrl("file:///android_asset/mypicture.jpg");
于 2016-04-23T07:18:11.297 回答
1

您的问题出在以下行:

wv.loadDataWithBaseURL(null, res, "text/html", "utf-8", null);

第一个参数 (baseURL) 为空。出于某种原因,即使您使用绝对 URL,WebView 也会拒绝加载任何链接的资源。如果您将代码更改为(假设您的图像存储在外部目录中),您可能会发现它会起作用:

wv.loadDataWithBaseURL ("file://" + Environment.getExternalStorageDirectory(), res, "text/html", "utf-8", null);

如果您引用网络上的资源,请记住添加适当的权限:

<uses-permission android:name="android.permission.INTERNET" />

对不起,我的回复有点晚了。当我遇到这篇文章时,我正在研究类似的问题。

于 2013-10-09T12:19:50.333 回答
0
       WebView webView=(WebView)findViewById(R.id.my_wb);
        String url = "YOUR URL";
        webView.getSettings().setLoadsImagesAutomatically(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webView.loadUrl(url);
于 2016-07-16T06:52:29.303 回答