代码如下:
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以上要动态权限