2013-12-13 1 views
5

안드로이드 4.4 이후로, Intent.ACTION_GET_CONTENT 유형을 실행하고 Intent를 입력하면 Gallery, Dropbox 등을 선택하는 대신 새 문서 브라우저가 열립니다. 이미지를 열려면이 방법을 이전 APIS에서와 동일한 방식으로 수행 할 수 있으므로 이미지를 열려면이 방법이 유용합니다. 문서 브라우저가 전달하는 Uri와 자르기 매개 변수를 무시하기 때문에 선택한 이미지를자를 필요가있을 때 문제가 발생합니다. 이것은 내가 뭐하는 거지입니다 :안드로이드에서 갤러리에서 선택하는 동안 자르기 4.4

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    if (photoUri != null) 
     outState.putString("uri", photoUri.toString()); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    if (savedInstanceState.containsKey("uri")) 
     photoUri = Uri.parse(savedInstanceState.getString("uri")); 
} 

을 그리고 onActivityResult를에, 난 그냥 photoUri와 InputStream를 여는 데 필요한 :

void take_photo() { 
    File file = null; 
    try { 
     file = PhotoUtils.createTemporaryFile("picture", ".jpg", 
       EditProfileActivity.this); 
     file.delete(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    photoUri = Uri.fromFile(file); 
    Intent galleryIntent= new Intent(Intent.ACTION_GET_CONTENT); 
    galleryIntent.setType("image/*"); 
    galleryIntent.putExtra("crop", "true"); 
    galleryIntent.putExtra("aspectX", 2); 
    galleryIntent.putExtra("aspectY", 2); 
    galleryIntent.putExtra("outputX", 1300); 
    galleryIntent.putExtra("outputY", 1300); 
    galleryIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); 
    startActivityForResult(galleryIntent, ACTIVITY_SELECT_IMAGE); 
} 

그럼 내가 돌아 왔을 때 그것을 사용할 수 있었다 확인하기 위해 내 photoUri 저장된 galleryIntent가 자르기 된 이미지로 파일을 만들었 기 때문입니다.

이제이 작업을 수행하면 인 텐트에 photoUri로 지정된 파일이 생성되지 않습니다. 이 일을하는 새로운 방법이 있습니까?

답변

4

반환 된 의도 데이터 인 Uri를 사용할 수 있습니다.

protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 

    if (requestCode == ACTIVITY_SELECT_IMAGE) { 

    if(resultCode == RESULT_OK){  
     Uri realUri = intent.getData(); 
    } 
    } 
} 

이제는 DocumentsActivity가 어떻게 "자르기"하는 지 알지 못합니다. 작업을 다음과 같이 변경할 수 있습니다. Intent.ACTION_PICK

이렇게하면 갤러리 나 포토 앱으로 직접 이동하는 DocumentsActivity를 둘러 볼 수 있습니다.

그러나 두 개의 인 텐트를 사용하는 것이 좋습니다. 하나는 사진을 찍는 의도이고, 다른 하나는 그 사진을 자르는 인 텐트입니다. 포토 앱과 같은 일부 앱은 '자르기'기능을 추가로 수행해야할지 모르기 때문에 훨씬 더 안정적입니다.

+0

내가 Kitkat에서하고있는 것이지만 어쨌든 crop 매개 변수를 허용하지 않습니다. – Makerhack

관련 문제