请注明出处:http://blog.csdn.net/daogepiqian/article/details/50483611
获取相册图片:
public void selectPhoto() {
if (!Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())) {
}
Intent intent = null;
intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(intent, REQUEST_CODE_FILE_CHOOSER);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_FILE_CHOOSER:
if (resultCode != RESULT_OK) {
return;
}
Uri uri = data.getData();
if (uri == null) {
return;
}
String mFilePath = getPath(getApplicationContext(), uri);
if (!isEmpty(mFilePath)) {
// gotoClipPicture(mFilePath); //鍘昏鍓�
View view = this.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
setImage(mFilePath);
}
break;
}
注意:getpatch():android4.4以后的区别 4.4之前是getDataColumn(context, uri, null, null);
@SuppressLint("NewApi")
public String getPath(final Context context, final Uri uri) {
final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
Log.d(TAG, "CommMethod.getPath. isKitKat=" + isKitKat);
if (isKitKat) {// android 4.4 及以后版本
if (DocumentsContract.isDocumentUri(context, uri)) {
if (isExternalStorageDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];
if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/"
+ split[1];
}
}
// DownloadsProvider
else if (isDownloadsDocument(uri)) {
final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(
Uri.parse("content://downloads/public_downloads"),
Long.valueOf(id));
return getDataColumn(context, contentUri, null, null);
}
// MediaProvider
else if (isMediaDocument(uri)) {
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type = split[0];
Uri contentUri = null;
if ("image".equals(type)) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if ("video".equals(type)) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
} else if ("audio".equals(type)) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
}
final String selection = BaseColumns._ID + "=?";
final String[] selectionArgs = new String[] { split[1] };
return getDataColumn(context, contentUri, selection,
selectionArgs);
}
} else if ("content".equalsIgnoreCase(uri.getScheme())) {
// Return the remote address
if (isGooglePhotosUri(uri)) {
return uri.getLastPathSegment();
}
return getDataColumn(context, uri, null, null);
} else {
return uri.getPath();
}
} else {// android 4.4以前版本
return getDataColumn(context, uri, null, null);
}
return null;
}
private String getDataColumn(Context context, Uri uri, String selection,
String[] selectionArgs) {
Cursor cursor = null;
final String column = MediaColumns.DATA;
final String[] projection = { column };
try {
cursor = context.getContentResolver().query(uri, projection,
selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
final int index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(index);
}
} finally {
if (cursor != null) {
cursor.close();
}
}
return null;
}
拍照获取图片:
public void takePhoto() {
if (!Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())) {
}
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
strTakePicturePath = getCapturePictureFilesPath(getApplicationContext());
String fileName = new SimpleDateFormat("yyyyMMddHHmmss")
.format(new Date()) + ".jpg";// 照片命名
File out = new File(strTakePicturePath, fileName);
try {
if (out.exists()) {
out.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
strTakePicturePath = strTakePicturePath + fileName;
Uri uri = Uri.fromFile(out);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, REQUEST_CODE_TAKE_PICTURE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_TAKE_PICTURE:
if (resultCode != RESULT_OK) {
return;
}
File file = null;
try {
file = new File(strTakePicturePath);
} catch (Exception e) {
e.printStackTrace();
}
if (file != null && file.isFile() && file.exists()) {
// gotoClipPicture(strTakePicturePath); //鍘昏鍓�
setImage(strTakePicturePath);
} else {
Log.i(TAG, "msg_take_picture_failed1");
}
break;
请注明出处:http://blog.csdn.net/daogepiqian/article/details/50483611