添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.CAMERA"></uses-permission>
设置点击事件后:
private File file;
AlertDialog.Builder alert = new AlertDialog.Builder(UserMsgActivity.this); alert.setTitle("选择标题"); String[] str={"相机","文档"}; alert.setSingleChoiceItems(str, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 200); break; case 1: Intent it = new Intent(Intent.ACTION_PICK); it.setType("image/*");//相片类型 startActivityForResult(it, 4000); break; default: break; } } }); alert.create(); alert.show();
这样,就可以调起Popwindow进行单选的选择,相机或相册,然后选择好方式后,在回调中做操作
Activity回调中:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == 200){ Bitmap bitmap = data.getParcelableExtra("data"); img.setImageBitmap(bitmap); file=new File("/mnt/sdcard/p_01.jpg");//将要保存图片的路径 try { BufferedOutputStream bos = null; bos = new BufferedOutputStream(new FileOutputStream(file)); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush(); bos.close(); } catch (Exception e) { e.printStackTrace(); } } if(requestCode == 4000){ Uri uri = data.getData(); try { String filePath; String[] filePathColumn = {MediaStore.MediaColumns.DATA}; Cursor cursor = this.managedQuery(uri, filePathColumn, null, null, null); cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); filePath = cursor.getString(columnIndex); cursor.close(); file = new File(filePath); Bitmap bm = BitmapFactory.decodeFile(filePath); img.setImageBitmap(bm); } catch (Exception e) { e.printStackTrace(); } } } 这样赋给Img,就完成了!