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」のようなものです