对于文件存储,我使用的是我在网上找到的几个例子中拼凑的自定义ContentProvider。只要我使用在类本身中定义的一个文件名(mImageName),它似乎工作得很好,但我需要能够使用类本身之外的参数来定义文件名。有人可以帮我弄这个吗?这是我的ContentProvider类的片段:
public class FileStorageContentProvider extends ContentProvider {
static final String AUTHORITY = "content://com.jwburnside.provider";
public static final Uri CONTENT_URI = Uri.parse(AUTHORITY);
private static final HashMap<String, String> MIME_TYPES = new HashMap<String, String>();
private String mImageName = "myImage";
static {
MIME_TYPES.put(".jpg", "image/jpeg");
MIME_TYPES.put(".jpeg", "image/jpeg");
}
public FileStorageContentProvider() {}
@Override
public boolean onCreate() {
try {
File mFile = new File(getContext().getFilesDir(),mImageName);
if(!mFile.exists()) {
mFile.createNewFile();
getContext().getContentResolver().notifyChange(CONTENT_URI, null);
}
return (true);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
在我的活动中:
mImageCaptureUri = FileStorageContentProvider.CONTENT_URI;
答案 0 :(得分:1)
您通常会将类似的内容指定为传递给方法的URI的一部分。所以你要使用像
这样的东西mImageCaptureUri = Uri.withAppendedPath(FileStorageContentProvider.CONTENT_URI, "myImage");
然后在各种方法(如query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
)中,您可以使用uri.getPath()
从URI中提取文件名。