解决方法
这适用于Kitkat
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); 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”/>