2014-06-08 4 views
0

허락 부분은 page을 참조하십시오. 수신 응용 프로그램에서 android - 의도를 통해 이미지 보내기

<provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="com.android.provider.DataSharing" 
     android:exported="false" 
     android:grantUriPermissions="true"> 

     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/paths"/> 

</provider> 

(com.android.datasharing_2.app) :

Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); 
if (imageUri != null){ 
    ImageView iv = (ImageView) findViewById(R.id.imageView); 
    iv.setImageURI(imageUri); 
} 
매니페스트에서

File imagePath = new File(getApplicationContext().getFilesDir(), "images"); 
File newFile = new File(imagePath, "earth.jpg"); 
Uri contentUri = FileProvider.getUriForFile(getApplicationContext(), 
         "com.android.provider.DataSharing", newFile); 

getApplicationContext().grantUriPermission("com.android.datasharing_2.app", contentUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); 

Intent i = new Intent(); 
i.setAction(Intent.ACTION_SEND); 
i.putExtra(Intent.EXTRA_STREAM, contentUri); 
i.setType("image/jpg"); 
startActivity(i); 

:

나는 다음과가있는 첫 번째 응용 프로그램이

수신중인 앱의 로그인에서 다음 메시지가 표시됩니다.

resolveUri failed on bad bitmap uri: content://com.android.provider.DataSharing/my_images/earth.jpg 

java.io.FileNotFoundException: No such file or directory 
     at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146) 
     at android.content.ContentProviderProxy.openTypedAssetFile(ContentProviderNative.java:682) 
     at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1063) 
     at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:904) 
     at android.content.ContentResolver.openInputStream(ContentResolver.java:629) 
     at android.widget.ImageView.resolveUri(ImageView.java:659) 
     at android.widget.ImageView.setImageURI(ImageView.java:399) 

Genymotion VM을 사용하여 테스트하고 있습니다. 나는 adb를 사용하여 images 폴더에 'earth.jpg'파일을 밀어 넣고 볼 수 있습니다.

어떻게 해결할 수 있습니까?

답변

0

문제는 이미지 위치 때문입니다. files-path을 사용하려면 files/디렉토리 아래에 파일을 넣어야합니다. 내 이미지/디렉토리가 푸시 된 파일과 함께 아래에 있었어야합니다.

app-dir-path/files/images/earth.jpg