2013-12-11 43 views
9

尝试从SD卡中仅挑选一个特定图像。我能够从kikat中的图库和照片应用中挑选图像。但未获取文件路径,当我从最近选择图像获取文件路径为空。我试过https://stackoverflow.com/a/2636538/1140321[Android - Kitkat]通过编程从Android内置图库应用中获取图像

+0

你真的需要的ImagePath?你正在上传图片吗?或者只是想在imageview中显示它? –

+0

我只是想在图像视图中显示.. – Meher

+0

你可以发布你的代码,因为它会更容易我回答 –

回答

33

这适用于奇巧

public class BrowsePictureActivity extends Activity{ 

private static final int SELECT_PICTURE = 1; 

private String selectedImagePath; 
private ImageView imageView; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.browsepicture); 
    imageView = (ImageView)findViewById(R.id.imageView1); 

    ((Button) findViewById(R.id.button1)) 
      .setOnClickListener(new OnClickListener() { 

       public void onClick(View arg0) { 
        Intent intent = new Intent(); 
        intent.setType("image/*"); 
        intent.setAction(Intent.ACTION_GET_CONTENT); 
        startActivityForResult(Intent.createChooser(intent, 
          "Select Picture"), SELECT_PICTURE); 
       } 
      }); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == SELECT_PICTURE) { 
      Uri selectedImageUri = data.getData(); 
      if (Build.VERSION.SDK_INT < 19) { 
       selectedImagePath = getPath(selectedImageUri); 
       Bitmap bitmap = BitmapFactory.decodeFile(selectedImagePath); 
       imageView.setImageBitmap(bitmap); 

      } 
      else { 
       ParcelFileDescriptor parcelFileDescriptor; 
       try { 
        parcelFileDescriptor = getContentResolver().openFileDescriptor(selectedImageUri, "r"); 
        FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); 
        Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor); 
        parcelFileDescriptor.close(); 
        imageView.setImageBitmap(image); 

       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
} 

/** 
* helper to retrieve the path of an image URI 
*/ 
public String getPath(Uri uri) { 
     if(uri == null) { 
      return null; 
     } 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = getContentResolver().query(uri, projection, null, null, null); 
     if(cursor != null){ 
      int column_index = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      return cursor.getString(column_index); 
     } 
     return uri.getPath(); 
} 

} 

您需要添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

+0

代码不一样...检查是否检查kitkat的if else条件:P –

+0

您是否尝试过代码?它为你工作? –

+0

@SunilMishra如何从kit-kat中获得图像路径? –

相关问题