DemoMainActivity-->UIElementActivity-->AddPhotoActivity
涉及到的类
AbHttpUtil:网络请求类
AbFileUtil:文件操作类
AbDialogUtil:对话框管理类
AbToastUtil:Toast管理类
图片的来源包括本地相册和相机拍照
涉及到的类
AbHttpUtil:网络请求类
AbFileUtil:文件操作类
AbDialogUtil:对话框管理类
AbToastUtil:Toast管理类
图片的来源包括本地相册和相机拍照
权限
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
private ImageView imagview;
/* 用来标识请求照相功能的activity */
private static final int CAMERA_WITH_DATA = 3023;
/* 用来标识请求gallery的activity */
private static final int PHOTO_PICKED_WITH_DATA = 3021;
/* 用来标识请求裁剪图片后的activity */
private static final int CAMERA_CROP_DATA = 3022;
File currentPhotoFile=null;
//相机拍照
case R.id.btCamera:
try{
String fileName = "camera_"+new Random().nextInt(1000)+
"-"+System.currentTimeMillis()+".png";
String photo_dir = AbFileUtil.getImageDownloadDir(this);
//照相机拍照得到的图片
currentPhotoFile = new File(photo_dir,fileName);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE,null);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(currentPhotoFile));
startActivityForResult(intent, CAMERA_WITH_DATA);
}catch (Exception e){
e.printStackTrace();
}
break;
//相册选择
case R.id.btGrallery:
try{
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(intent,PHOTO_PICKED_WITH_DATA);
}catch (Exception e){
e.printStackTrace();
}
break;
--------------------------------------------------------------------------
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode != RESULT_OK){
return;
}
String currentFilePath = null;
switch (requestCode){
case CAMERA_WITH_DATA:
currentFilePath = currentPhotoFile.getPath();
Log.i("camera","从拍照获取的图片的路径是"+currentFilePath);
imagview.setImageURI(Uri.fromFile(currentPhotoFile));
break;
case PHOTO_PICKED_WITH_DATA:
Uri uri = data.getData();
currentFilePath = getPath(uri);
Log.i("camera","从相册获取到的图片路径"+currentFilePath);
imagview.setImageURI(uri);
break;
}
}
/**
* 从相册得到的url转换为SD卡中图片路径
*/
public String getPath(Uri uri) {
if(AbStrUtil.isEmpty(uri.getAuthority())){
return null;
}
String[] proj = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(this, uri, proj, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
运行Logocat
I/camera ( 4226): 从拍照获取的图片的路径是/storage/emulated/0/download/com.xxx.andbasetest/images/camera_685-1513759389911.png
I/camera ( 4226): 从相册获取到的图片路径/storage/emulated/0/Pictures/新建相册/超级截屏_20171130_100259.png