[英]how to convert `content://media/external/images/media/Y` to `file:///storage/sdcard0/Pictures/X.jpg` in android?
[英]I want to convert file:///storage/sdcard0/blue.jpg to content://media/external/images/media/3163 in android
我想從我的應用上傳圖像,音頻和視頻文件。 如果我使用圖庫( content://media/external/images/media/3163
)選擇圖像,它可以正常工作,但如果我選擇使用文件管理器( file:///storage/sdcard0/blue.jpg
)它無法正常工作。
uri=intent.getData();
String[] filePathColumn = { MediaStore.Images.ImageColumns.DATA };
if (uri != null) {
Cursor cursor = RootActivity.rootContext.getContentResolver().query(Uri.parse(uri),filePathColumn, null, null, null);
}
如果uri = file:///storage/sdcard0/blue.jpg
,則游標返回null,任何人都可以幫助我嗎?
試試如下:
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(
Intent.createChooser(intent, "Select Picture"),
SELECT_PICTURE);
}
});
並在您的活動中添加兩個方法
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
String s1 = data.getDataString();
//String s1 = selectedImageUri.getPath();
Log.e("GetPath",s1);
Log.e("OK",""+selectedImageUri);
selectedImagePath = getPath(selectedImageUri);
if(selectedImagePath==null && s1 != null)
{
selectedImagePath = s1.replaceAll("file://","");
}
Intent intent = new Intent(this, PhotoEditorActivity.class);
intent.putExtra("path", selectedImagePath);
startActivity(intent);
finish();
}
}
}
//Return the path of the file.
public String getPath(Uri uri) {
try{
String[] projection = { MediaStore.Images.Media.DATA };
Log.e("OK 1",""+projection);
Cursor cursor = managedQuery(uri, projection, null, null, null);
Log.e("OK 2",""+cursor);
if(cursor==null)
{
return null;
}
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
Log.e("OK 3",""+column_index);
cursor.moveToFirst();
Log.e("OK 4",""+cursor.getString(column_index));
return cursor.getString(column_index);
}
catch(Exception e)
{
Toast.makeText(PhotoActivity.this, "Image is too big in resolution please try again", 5).show();
return null;
}
}
並將此int添加為類成員
private static final int SELECT_PICTURE = 1;
試試這段代碼:
public String getRealPathFromURI(Uri contentUri) {
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.