使用ContentProvider共享文件时,一定要重写openFile方法,否则会报异常。
如:
public class ContentProviderDemo extends ContentProvider {
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode)
throws FileNotFoundException {
//由于是应用内的不同进程,故这里把文件放到data/data/包名 目录下
String path = getContext().getFilesDir().getParent();
File file = new File(path, uri.getPath().substring(1));
// ParcelFileDescriptor.MODE_READ_ONLY:只可读
// ParcelFileDescriptor.MODE_WRITE_ONLY:只可写
// ParcelFileDescriptor.MODE_READ_WRITE:可读可写
return ParcelFileDescriptor.open(file,
ParcelFileDescriptor.MODE_READ_ONLY);
}
...
}
如果uri = content://jobdispatcher/abc.txt时,uri.getPath和uri.