Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android loadDataWithBaseURL方法如何工作?_Android - Fatal编程技术网

Android loadDataWithBaseURL方法如何工作?

Android loadDataWithBaseURL方法如何工作?,android,Android,我的代码运行异常。我有asstest文件夹和screen.png文件。我有一个关于代码的主要活动: package webviewtest.webviewtest; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClie

我的代码运行异常。我有asstest文件夹和screen.png文件。我有一个关于代码的主要活动:

package webviewtest.webviewtest;

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
    WebView view;

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

        view = (WebView) findViewById(R.id.webView);
        String data = "<html><body><img src=\"screen.png\" style=\"display:block;margin-left:auto;margin-right:auto;position:relative;top:50%;margin-top:-101px;\"></body></html>";
        view.loadDataWithBaseURL("file:///android_asset/", data, "text/html", "utf-8", null);
        view.setWebViewClient(new WebViewClient());
    }
}

而且它起作用了。但是我使用android_asset而不是android assetS,而我的文件夹名为assetS,为什么它能工作?

这是取自android源代码中的URLUtil类:

public final class URLUtil {
private static final String LOGTAG = "webkit";
// to refer to bar.png under your package's asset/foo/ directory, use
// "file:///android_asset/foo/bar.png".
static final String ASSET_BASE = "file:///android_asset/";
稍后会检查是否为资产url:

/**
 * @return True iff the url is an asset file.
 */
public static boolean isAssetUrl(String url) {
    return (null != url) && url.startsWith(ASSET_BASE);
}

android_资产文件夹是从gradle构建文件中指定为资产文件夹的文件夹中填充的

android.sourceSets.main { assets.srcDirs = ['assets'] }

参见:

谢谢,你的回答帮助我理解了。