프로그래밍/android2011.04.26 14:52
private final int SELECT_IMAGE = 1;
private final int SELECT_MOVIE = 2;
// 이미지 선택
private void doSelectImage()
{
	Intent i = new Intent(Intent.ACTION_GET_CONTENT);
	i.setType("image/*");
	i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
	try
	{
		startActivityForResult(i, SELECT_IMAGE);
	} catch (android.content.ActivityNotFoundException e)
	{
		e.printStackTrace();
	}
}

// 동영상선택
private void doSelectMovie()
{
	Intent i = new Intent(Intent.ACTION_GET_CONTENT);
	i.setType("video/*");
	i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
	try
	{
		startActivityForResult(i, SELECT_MOVIE);
	} catch (android.content.ActivityNotFoundException e)
	{
		e.printStackTrace();
	}
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
	super.onActivityResult(requestCode, resultCode, intent);
	
	if (resultCode == RESULT_OK)
	{
		if (requestCode == SELECT_IMAGE)
		{
			Uri uri = intent.getData();
			String path = getPath(uri);
			String name = getName(uri);
			String uriId = getUriId(uri);
			Log.e("###", "실제경로 : " + path + "\n파일명 : " + name + "\nuri : " + uri.toString() + "\nuri id : " + uriId);
		}
		else if (requestCode == SELECT_MOVIE)
		{
			Uri uri = intent.getData();
			String path = getPath(uri);
			String name = getName(uri);
			String uriId = getUriId(uri);
			Log.e("###", "실제경로 : " + path + "\n파일명 : " + name + "\nuri : " + uri.toString() + "\nuri id : " + uriId);
		}
	}
}

// 실제 경로 찾기
private String getPath(Uri uri)
{
	String[] projection = { MediaStore.Images.Media.DATA };
	Cursor cursor = managedQuery(uri, projection, null, null, null);
	int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
	cursor.moveToFirst();
	return cursor.getString(column_index);
}

// 파일명 찾기
private String getName(Uri uri)
{
	String[] projection = { MediaStore.Images.ImageColumns.DISPLAY_NAME };
	Cursor cursor = managedQuery(uri, projection, null, null, null);
	int column_index = cursor
			.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DISPLAY_NAME);
	cursor.moveToFirst();
	return cursor.getString(column_index);
}

// uri 아이디 찾기
private String getUriId(Uri uri)
{
	String[] projection = { MediaStore.Images.ImageColumns._ID };
	Cursor cursor = managedQuery(uri, projection, null, null, null);
	int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID);
	cursor.moveToFirst();
	return cursor.getString(column_index);
}

저작자 표시 비영리 변경 금지
신고
Posted by 쎄미

댓글을 달아 주세요

  1. PHOENIX

    아.. 감사합니다. 앨범에서 실제 파일경로 알아오는 방법을 찾지 못해서 엄청 고생했는데.
    덕분에 겨우 해결했습니다!! ^^

    2011.05.03 06:41 신고 [ ADDR : EDIT/ DEL : REPLY ]
  2. 양정화

    감사합니다..
    질문이 있는데요. String name 에 이미지 이름을 적으셧는대.
    그 String name을 사용할려니 안되네요..
    로그에 찍으면 나오는대;
    이미지 경로는 uri.toString().substring(7).replaceAll("%3B", ";";)이렇게 하니깐 되는데..
    이미지 이름을 디비로 전송해야되서 .. 혹시 쫌 알려주세요.

    2011.05.27 16:31 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 감사합니다..

    담아가기 기능이 업는거 같아서 죄송하지만 소스좀 긁어가겟습니다 ㅠㅠ

    물론 출저는 표시해놓고요 좋은거 얻어갑니다

    2011.07.18 19:39 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 두르두르

    진짜 감사합니다.
    완전 좋은 자료네요 ^^
    아무리 검색해도 검색어도 모르겠고, 찾기 힘들었는데 덕분에 해결 했습니다.

    2011.10.11 22:09 신고 [ ADDR : EDIT/ DEL : REPLY ]
  5. 도움 부탁드립니다.

    여기서 받은 log 값을 새로운 activity 에 넘겨 줘야 하는데 어떻게 할 수 있을까요ㅠㅠ

    2012.08.22 02:03 신고 [ ADDR : EDIT/ DEL : REPLY ]
  6. 궁금증이요 ㅠ.ㅠ

    앨범에서 사진을 여러장 선택해서 가져오려면 어떻게 해야되나요??
    앨범은 띄워지는데 한장만 선택이 가능하더라구요
    그리고 여러장 선택시 선택된 숫자만큼 파일 경로를 어떻게 가져오는지도좀....

    2013.02.06 14:26 신고 [ ADDR : EDIT/ DEL : REPLY ]
  7. 하늘소

    쎄미님의 덕분에 목마르던 감을 풀었네요.장훈이에요.정말로 감사를 드려요.쎄미님의 장수를 바래요,

    2013.02.12 12:30 신고 [ ADDR : EDIT/ DEL : REPLY ]
  8. 건망고

    간결하면서도 한눈에 볼수 있는 코드라 바로 이해하는데 도움이 컷네요 감사합니다. ㅎ

    2013.08.16 19:53 신고 [ ADDR : EDIT/ DEL : REPLY ]
  9. 쉐렘

    우와 감사합니다 꼭 필요한 내용이...!

    2013.09.17 01:19 신고 [ ADDR : EDIT/ DEL : REPLY ]
  10. 감사합니다 담아갈게요~

    2014.08.28 18:00 신고 [ ADDR : EDIT/ DEL : REPLY ]
  11. 영민박

    동영상 URL 을 가져오는데 GETPath 에서 종료되여...

    2015.05.06 19:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
  12. 영민박

    동영상 URL 을 가져오는데 GETPath 에서 종료되여...

    2015.05.06 19:59 신고 [ ADDR : EDIT/ DEL : REPLY ]
  13. managedQuery 가 에러인데 뭐가 문제인지 모르겠습니다.

    2015.05.21 18:57 신고 [ ADDR : EDIT/ DEL : REPLY ]
  14. 보석 찾기에 성공했네요.
    에러 나는 분들 ...
    onActivityResult 파라미터 가져올 때 잘못 코딩해서 <널> 넘어가는 경우도 있음을 참고하세요.
    감사합니다.

    2017.04.19 06:17 신고 [ ADDR : EDIT/ DEL : REPLY ]
  15. 이 페이지에 질문 올리기가 부적절한지 모르지만, 아무리 구글링하고 질문해도 답을 얻지 못해서 부탁을 드립니다.

    Uri uriPart = Uri.parse("content://mms/part";);
    Cursor cursorPart = contentResolver.query(uriPart, null, selectionPart, null, null);
    if ("video/mp4".equals(type)) {
    String videoPath = cursorPart.getString(cursorPart.getColumnIndex("_data";));

    위 코드에서 얻어진 String videoPath를 가지고 비디오파일의 실제 저장된 경로를 알아올 수 있을까요?

    이 페이지의 getPath 메소드에 Uri.parse(videoPath) 파라미터를 넘기니까 에러가 나고, 불가능한지 가능한지조차 몰라서 문의 드립니다.

    http://tip.daum.net/question/94119329

    자세한 내용은 위 페이지에 올려 두었습니다.

    2017.04.19 10:47 신고 [ ADDR : EDIT/ DEL : REPLY ]
  16. 해결 : 메시지 첨부 비디오가 저장된 실제 경로 가져오기(갤럭시S3 폰)/[Android] http://blog.daum.net/andro_java/1176

    2017.05.02 01:59 신고 [ ADDR : EDIT/ DEL : REPLY ]



티스토리 툴바