eclipse安卓开发时访问sd卡相册,但是用imageview无法显示图片,急!!!!!

代码如下:

main.java:
//调用系统相册
public void onClick(View v) {

    Intent intent = new Intent(Intent.ACTION_PICK,
    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, IMAGE);
}


//这里获取图片路径并显示
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == IMAGE && resultCode == Activity.RESULT_OK && data != null) {
        Uri selectedImage = data.getData();
        String[] filePathColumns = {MediaStore.Images.Media.DATA};
        Cursor c = getContentResolver().query(selectedImage, filePathColumns, null, null, null);
        c.moveToFirst();
        int columnIndex = c.getColumnIndex(filePathColumns[0]);
        String imagePath = c.getString(columnIndex);
        ImagePath=columnIndex;
        showImage(imagePath);//调用图片显示方法
        c.close();
    }
}

//显示图片
private void showImage(String imaePath){
    Bitmap bm = BitmapFactory.decodeFile(imaePath);
    ((ImageView)findViewById(R.id.ImageView01)).setImageBitmap(bm);
}

main.xml:

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="@string/open"/>
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

        到底是哪里出问题了呢?

我看了下,你应该是没有添加读取sd卡的权限,你的图片是sd卡里面的,
当没有添加权限时, Bitmap bm = BitmapFactory.decodeFile(imaePath);,bm获取到的值为null
所以,在AndroidManifest.xml中加上

就可以了

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

看下你的照片有多大 然后看看权限加了没

主要是权限

android 4.4后 通过相册获取图片的方式改变了 需要适配api level 而且不同的图库获取方式不同 你这是4.4之前的获取方式
4.4以后的获取方式 http://blog.csdn.net/zbjdsbj/article/details/42387551

要在配置添加相应权限才行

代码没问题,就是没有添加权限。。。。。。。。。

如果你只在AndroidManifest加了权限,那在高版本的手机上也还是会报错,还应该加上动态权限管理,算是个系统兼容问题吧,android越来越注重保密性,很多默认打开的权限现在都要手动控制了

安卓6.0以上要动态权限