我的应用程序有一个资产目录,我在其中转储了一堆我需要在运行时加载的文本文件.
我有一个目录充满了特定类型的资产(即"assets/subdir"),我想加载这个目录中的所有文件,一次一个.
我有这样的代码:
AssetManager assetMgr = getAssets();
String[] assetsIWant = assetMgr.list("subdir");
for(String asset: assetsIWant) {
doAssetyThing(asset);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了大量不同版本的参数到assetMgr.list()并且没有到达任何地方.
如果我使用"/",我会返回一个包含"assets"目录的列表,以及一些随机的其他项目(例如META_INF).如果我传递任何其他字符串(如"assets"或"assets /"或"/ assets"或"/ assets /"或"mysubdir"或"/ mysubdir"或"assets/mysubdir"或...)那么我得到回一个空数组.
遗憾的是,文件相当不连贯.
有人知道list()参数的正确公式是什么吗?
我已经看到了关于从资产提供WebView页面的问题的各种讨论,其中没有一个看起来是确定的.
我希望能够使用webview显示存储在项目资产中的html(和包含的css)文件.
我发现wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html")显示该文件没问题,但是demo_welcome.html中的链接,无论是本地(没有url前缀文件名)还是绝对 - 相同form for fed to loadUrl - 不起作用.他们在视图上显示"网页不可用"错误.
WebView wv = (WebView)this.findViewById(R.id.splashWebView);
wv.loadUrl("file:///android_asset/html_no_copy/test.html"); // Works
Run Code Online (Sandbox Code Playgroud)
要么
wv.loadUrl("file:///android_asset/html_no_copy/demo_welcome.html"); // Works
Run Code Online (Sandbox Code Playgroud)
但是demo_welcome.html中的以下链接都不起作用:
<a href="test.html">CLICK HERE</a><p>
<a href="file:///android_asset/html_no_copy/test.html">OR HERE</a>
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过编写内容提供商来解决这个问题,但这看起来很极端.
我希望这可以从SDK 1.6(4)开始工作.
有没有人知道这是否可以用HTML完成,还是需要克隆一些代码来加载数据?