0

对于文件存储,我使用的是从网上找到的几个示例拼凑而成的自定义 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;
4

1 回答 1

1

您通常会将类似的内容指定为传递给您的方法的 URI 的一部分。所以你会使用类似的东西

mImageCaptureUri = Uri.withAppendedPath(FileStorageContentProvider.CONTENT_URI, "myImage");

然后在您的各种方法(如query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder))中,您可以使用 . 从 URI 中提取文件名uri.getPath()

于 2013-07-29T21:47:10.860 回答