我实现了一个ContentProvider
通过覆盖的openFile(...)
方法。然后我通过使用ContentResolver.openFileDescriptor(...)
方法对其进行了测试。如 javadoc 中所述,openFileDescriptor
假设调用ContentProvider.openFile
:
“...打开原始文件描述符以访问 URI 下的数据。这类似于openAssetFileDescriptor(Uri, String)
,但使用底层openFile(Uri, String)
ContentProvider.openFile()
方法...”
问题是该openFile()
方法从未被调用过。相反,我观察到它openAssetFile()
被调用了。我用 android 4.1.2r1 对其进行了测试。当我查看 android 类 ContentResolver (4.1.2) 的源代码时,我看到它openFileDescriptor()
只会调用openAssetFileDescriptor()
,我根本找不到任何ContentProvider.openFile()
可以调用的执行路径。
有人知道我错在哪里吗?- 谢谢
这是我的测试方法调用:
context.getContentResolver().openFileDescriptor(bitmapUri, "r").getFileDescriptor();
我bitmapUri
是这样的“内容://com.myprovider.authority/filename”