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
は「content://com.myprovider.authority/filename」のようなものです