我的代码表现得很奇怪。我有“asstest”文件夹和其中的screen.png文件。我有MainActiviy代码:
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”,为什么会有效?
答案 0 :(得分:0)
这取自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/";
稍后检查天气它是一个资产网址:
/**
* @return True iff the url is an asset file.
*/
public static boolean isAssetUrl(String url) {
return (null != url) && url.startsWith(ASSET_BASE);
}
答案 1 :(得分:0)
android_asset文件夹是从您在gradle构建文件中指定为资产文件夹的文件夹中填充的。
android.sourceSets.main { assets.srcDirs = ['assets'] }
请参阅:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Project-Structure