//从图库选图的intent
Intent i1 = new Intent(Intent.ACTION_PICK);
i1.setDataAndType(Images.Media.EXTERNAL_CONTENT_URI, "image/*");
//从相机拍照的intent
Intent i2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
File camerFile = new File(file,System.currentTimeMillis()+".jpg");
Uri value = Uri.fromFile(camerFile);
i2.putExtra(MediaStore.EXTRA_OUTPUT, value);
//把俩个intent“凑成”一个intent发送
Intent intent = Intent.createChooser(i1, "选择头像");
intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[]{i2});
//把凑成的intent发送出去
startActivityForResult(intent, 100);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==100 && resultCode==RESULT_OK){
if(data==null){
//拍照返回的
}else{
//图库选择返回的
//content://media/XXXX
Uri uri = data.getData();
ivAvatar.setImageURI(uri);
//要找到uri对应的文件在SD卡上的绝对路径
//ContentResolver去数据库查询
ContentResolver cr = getContentResolver();
Cursor c = cr.query(uri, new String[]{Images.Media.DATA}, null, null, null);
c.moveToNext();
path = c.getString(0);
c.close();
Log.d("TAG", "uri:-->"+uri.toString()+", 绝对路径:-->"+path);
}
}
}