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'파일을 밀어 넣고 볼 수 있습니다.
어떻게 해결할 수 있습니까?