MDTupleTypedArrayWrapper
答案 0 :(得分:0)
尝试
private String getRealPathFromURI(String contentURI) {
Uri contentUri = Uri.parse(contentURI);
Cursor cursor = mContext.getContentResolver().query(contentUri, null, null, null, null);
if (cursor == null) {
return contentUri.getPath();
} else {
cursor.moveToFirst();
int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
String str = cursor.getString(index);
cursor.close();
return str;
}
}
选中此
@SuppressLint("NewApi")
public static String getRealPathFromURI(Context context, Uri uri) {
String filePath = "";
String wholeID = DocumentsContract.getDocumentId(uri);
// Split at colon, use second item in the array
String id = wholeID.split(":")[1];
String[] column = {MediaStore.Images.Media.DATA};
// where id is equal to
String sel = MediaStore.Images.Media._ID + "=?";
Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel, new String[]{id}, null);
int columnIndex = cursor.getColumnIndex(column[0]);
if (cursor.moveToFirst()) {
filePath = cursor.getString(columnIndex);
}
cursor.close();
return filePath;
}
从相机获取URI
private Uri capturedUri;
public void openCamera() {
Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createMediaFile(1);
} catch (IOException ex) {
}
// Continue only if the File was successfully created
if (photoFile != null) {
capturedUri = null;
capturedUri = Uri.fromFile(photoFile);
takePicture.putExtra(MediaStore.EXTRA_OUTPUT, capturedUri);
startActivityForResult(takePicture, 1);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
if ((null == data) || (data.getData() == null)) {
try {
Bitmap photo = MediaStore.Images.Media.getBitmap(getContentResolver(), capturedUri);
img_profileimage.setImageBitmap(photo);
capturedUri = getImageUri(context, photo);
} catch (IOException e) {
e.printStackTrace();
}
} else {
Toast.makeText(context, context.getResources().getString(R.string.some_thing_went_wrong), Toast.LENGTH_SHORT);
}
} else if (requestCode == 2) {
if (data.getData() != null) {
// Uri selectedImage = data.getData();
capturedUri = null;
capturedUri = data.getData();
} else {
Toast.makeText(context, context.getResources().getString(R.string.some_thing_went_wrong), Toast.LENGTH_SHORT);
}
}
}
}
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String picturePath = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Image", null);
return Uri.parse(picturePath);
}
public File createMediaFile(int type) throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String fileName = type == 1 ? "JPEG_" + timeStamp + "_" : "VID_" + timeStamp + "_";
File storageDir = Environment.getExternalStoragePublicDirectory(type == 1 ? Environment.DIRECTORY_PICTURES : Environment.DIRECTORY_MOVIES);
File file = File.createTempFile(fileName, /* prefix */type == 1 ? ".jpg" : ".mp4",/* suffix */storageDir/* directory */);
return file;
}
答案 1 :(得分:0)
public static String getFilePathByUri(Context context, Uri uri) {
String fileName = "";
Uri filePathUri = uri;
if (uri.getScheme().toString().compareTo("content") == 0) {
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
if (cursor.moveToFirst()) {
int column_index = cursor.getColumnIndexOrThrow("_data");
filePathUri = Uri.parse(cursor.getString(column_index));
fileName = filePathUri.getEncodedPath();
}
cursor.close();
} else if (uri.getScheme().compareTo("file") == 0) {
fileName = filePathUri.getEncodedPath();
} else {
fileName = fileName + "_" + filePathUri.getLastPathSegment();
}
return fileName;
}