仅获取图库文件夹:Intent.ACTION_GET_CONTENT

时间:2014-04-02 17:49:37

标签: android gallery

我想实现一个Picture Chooser,因为最新图片下载文件夹存在错误,当从这两个图片中选择图片时Android应用程序崩溃了文件夹,我想隐藏它们,或者直接打开Gallery文件夹而不显示Folder chooser面板,

这是我的实际代码:

Intent intent = new Intent (Intent.ACTION_GET_CONTENT);
startActivityForResult (intent, 1000);

并在结果方法中:

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent intent) {

    super.onActivityResult (requestCode, resultCode, intent);

    String uri = intent.getDataString ();
    String absolutePath = getRealPathFromURI (uri);
    String compressedFilePath = compressImage (absolutePath);

    encodedResult = base64File (new File (compressedFilePath)); //String
}

protected String getRealPathFromURI (String contentURI, UIView uiView) {
    Uri contentUri = Uri.parse(contentURI);
    Cursor cursor = ((ContextWrapper) uiView).getContentResolver ().query(contentUri, null, null, null, null);
    if (cursor == null) {
        return contentUri.getPath();
    } else {
        cursor.moveToFirst();
        int index = cursor.getColumnIndex(MediaColumns.DATA);
        return cursor.getString(index);
    }
}

因此,当我从文件夹中选择一个图像时,如:图库,图片等...它工作得很好。但对于2个文件夹:下载最近,它会崩溃并给我:

java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.

或许有更正确的方法可以做到这一点,我不知道它?

你对此有任何想法吗?我怎样才能做到这一点?感谢。

1 个答案:

答案 0 :(得分:0)

  

它崩溃并给了我

这是因为您假设任何Uri都可以转换为File。这从未受到支持。

使用ContentResolverUri通过openInputStream()(或openOutputStream(),如果适用)消费。