繁体   English   中英

如何在Android中获取图库图像路径?

[英]How to get the gallery images path in Android?

通过使用以下代码,我在4.4.4中获取了图像路径,但是,当我在棒棒糖5.0.1中使用它时,它不起作用。

String[] proj = {
                MediaStore.Images.Thumbnails._ID,
                MediaStore.Images.Thumbnails.DATA,
        };

        CursorLoader cursorLoader = new CursorLoader(
        this,  MediaStore.Images.Media.EXTERNAL_CONTENT_URI, proj, null, null, null);        

        Cursor imageCursor = cursorLoader.loadInBackground();

通过在需要时调用getSupportLoaderManager来启动加载器管理器。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) {
            imageUri = data.getData();
            getSupportLoaderManager().initLoader(0, null, this);
        } else if (resultCode == Activity.RESULT_CANCELED) {
            Toast.makeText(this, "Action canceled.", Toast.LENGTH_LONG).show();
        } else { 
            Toast.makeText(this, "Action failed!", Toast.LENGTH_LONG).show();
        } 
    } 
} 

然后创建一个用于读取图像路径的游标加载器。

@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    String[] projection = {
            MediaStore.Images.Media.DATA
    }; 
    CursorLoader cursorLoader = new CursorLoader(this, imageUri, projection, null, null, null);

    return cursorLoader; 
} 

游标加载器完成后,它将使用检索到的数据更新UI。

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
    if (data != null) {
        int columnIndex = data.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

        data.moveToFirst();
        imagePath = data.getString(columnIndex);
    } else { 
        imagePath = imageUri.getPath(); 
    } 

    setupImageView(); 
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM