我通过Javascript传递本地文件来设置img源代码,但我无法使其正常工作。 设置路径的javascript是
<img src='" + the_payload.image + "' width='" + (cellWidth()-20) + "' />
我发送的字符串是完整的文件路径:
file:///mnt/sdcard/Android/data/com.newvisioninteractive.android.myapp/files/c87eba4a-5349-4a55-baec-cc573a5f7571-thumb.png
我看到一篇关于ContentProviders和ParcelFileDescriptors的帖子但是也无法使用它。
这适用于在特定日期显示图像的日历视图。当我传入静态图像时,它工作正常,而不是本地图像。
另外,我已经设置了
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptEnabled(true);
我是否需要设置其他权限?
答案 0 :(得分:1)
解决方案是扩展ContentProvider类并覆盖openFile(Uri,String)方法
package com.packagename.provider;
public class MyProvider extends ContentProvider {
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode){
URI fileURI = URI.create( "file://" + uri.getPath() );
File file = new File( fileURI );
ParcelFileDescriptor parcel = null;
try {
parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
} catch (FileNotFoundException e) {
Log.e( TAG, "Error finding: " + fileURI + "\n" + e.toString() );
}
return parcel;
}
}
然后在你的AndroidManifest.xml文件中包含
<provider
android:name=".provider.MyProvider"
android:authorities="com.packagename" />
然后,您可以访问通常为
的文件 file://sdcard/Android/data/com.packagename/image.jpg
使用
content://com.packagename/sdcard/Android/data/com.packagename/image.jpg
所以基本上将content://替换为内容://com.packagename
答案 1 :(得分:0)
尝试使用file:///android_assets/image.png并将图片放入android资源