Android에서 content:/// 스키마의 Uri를 file:/// 스키마의 Uri로 변경하기..

안드로이드에서, 앱으로 파일을 공유하는 경우, 위치를 받아오는 포맷이 크게 2가지가 있다. 

하나는 content:/// 스키마의 포맷이고, 다른 하나는 file:/// 스키마의 포맷으로 Uri 객체나 리스트 Uri를 받을 수 있다. 그리고, 파일을 공유받기 위해서는 ACTION_SEND와 ACTION_SEND_MULTIPLE를 AndroidManifest.xml 파일에서 해당 Action을 처리하는 Activity안에 기술해 준다. 


	
    
	
        
        
        
        
        
        
        
    
    
        
        
       	
        
        
        
        
        
    

위의 과정을 통해서, 서비스하는 앱이 다른 앱에서 공유하는 파일의 위치를 받아서 업로드를 하거나, 파일을 전송할 수 있다. 위의 content:/// 스키마를 사용하는 기본 갤러리 앱등에서 받은 content:/// Uri를 file:/// 스키마의 Uri로 변경시켜 주는 코드이다. 

	/**
	 * Uri 스키마를 content:/// 에서 file:/// 로  변경한다.
	 * 
	 * @param ctx
	 * @param uri
	 * @return
	 * @throws Exception
	 */
	public static Uri convertContentToFileUri(Context ctx, Uri uri) throws Exception {
		Cursor cursor = null;
		try {
			cursor = ctx.getContentResolver().query(uri, null, null, null, null);
			cursor.moveToNext();
			return Uri.fromFile(new File(cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA))));
		} finally {
			if(cursor != null)
				cursor.close();
		}
	}	

자, 이제 변경된 Uri에서 파일의 위치를 가져와서 I/O 작업을 할 수 있겠다..

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.