2016-11-08 4 views
3

최근 Android Nougat를 지원하기 위해 adobecreativesdk를 최신 버전으로 업데이트했습니다. 내가 편집기에서 이미지를 편집 한 후 내가하여 onActivityResult에서 다음 코드를 사용하여 편집 된 비트 맵을 얻으려고 :BitmapFactory.decodeFile()이 AdobeImageIntent.EXTRA_OUTPUT_URI와 작동하지 않습니다.

mImageUri = data.getParcelableExtra(AdobeImageIntent.EXTRA_OUTPUT_URI); 

        Bitmap bitmap = BitmapFactory.decodeFile(mImageUri.getPath()); 

        if(bitmap!=null) 
        { 

        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
        imagebytes = baos.toByteArray(); 

        PlayAnimation(); 
        } 

내가 data.getData를 (사용 된 최신 버전으로 업데이트) 대신 data.getParcelableExtra과 전 Android Marshmallow에서 잘 작동했습니다. 하지만 지금 내 비트 맵은 항상 null로 반환됩니다. 이 게시물에 언급 된 것처럼 이미지의 URI를 설정했습니다 : https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en. BitmapFactory.Options를 사용하여 비트 맵의 ​​크기를 조정하려고 시도했는데 이미지가 너무 컸을 수도 있습니다. 그러나 그럴 것 같지 않습니다. 당신이 이미지에 Uri이있는 경우

+0

'mImageUri.getPath()'. 경로를 말해주십시오. 그것은 컨텐츠 sheme의 일부일 수 있습니다. – greenapps

답변

1

ContentResolver를 통해 읽어 것이 좋습니다 :

Uri uri; 
Context context; 
try { 
    Bitmap bm = BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri)); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 

ContentResolver 당신을위한 기본 스토리지 차이를 처리합니다. file://, content:// 및 기타 Uri 유형으로 모두 똑같이 작동합니다.

+0

예이 문제가 해결되었습니다 :) 감사합니다. – nexus