我对内容提供人档案的储存和检索进行了盘点,并发现了问题,但我的情况没有什么不同。
我正在准备一份将接纳我们另外一件事的内容。 想把它作为出售内容的一种方式,而实际上却不进行购买。
It is currently working, but I have to make copies of the images into the cache so that the ParcelFileDescriptor passed back from openFile is valid. I was hoping that someone might know how to reference and arbitrary ParcelFileDescriptor from a file bundled with the app. Assets doesn t seem to facilitate this. Raw is likely the same scenario.
Let me try to explain by example... THIS is how I would expect things to work if I were storing all my files in assets (which I currently am).
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode)
throws FileNotFoundException {
String fileName = uri.getEncodedPath();
AssetFileDescriptor afd = getContext().getAssets().openFd(fileName);
ParcelFileDescriptor pfd = afd.getParcelFileDescriptor();
return pfd;
}
But, of course, this doesn t work. I get a valid ParcelFileDescriptor returned to the app calling the ContentResolver, but it appears to be pointing to the entire assets directory. After reading around the intertubes for a while, it seems that assets doesn t allow for a descriptor to reference it from outside of the app it s associated with (though, I have no references for this).
I "solved" the problem by copying the file in question into the cache of the app hosting the ContentProvider then returning the ParcelFileDescriptor of the cached file. This works just fine... but I end up doubling the size of the app.
这是我问题的核心...... 是否有办法阻止从内容提供人处(任何类型的)静态档案,而不必将其复制到海滩。
即便我用斜体来储存这些档案,我也不得不提供数据库的初步副本,以便它能够令人信服。
这是否有意义?