Dev/Error

Android - Writing exception to parcel

healthyryu 2018. 8. 29. 12:36

!! MP4 파일 공유할때 발생한 에러 !!



처음 에러를 맞딱드렸을때, 경로의 문제라는것만 짐작할 수 있었다.


08-29 11:21:33.817 8431-9377/com.iofit E/DatabaseUtils: Writing exception to parcel

    java.lang.IllegalArgumentException: Unknown URI: content://com.iofit.database/external_files/DCIM/iofit/video_1535503745198.mp4

        at com.iofit.database.IOFITContentProvider.query(IOFITContentProvider.java:385)

        at android.content.ContentProvider.query(ContentProvider.java:1063)

        at android.content.ContentProvider.query(ContentProvider.java:1155)

        at android.content.ContentProvider$Transport.query(ContentProvider.java:244)

        at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:102)

        at android.os.Binder.execTransact(Binder.java:682)




Provider 파일에서 meta-data 가 없어서 발생한 경로 문제 같다.


<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="패키지명" + ".fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>


그리고 res > xml 폴더를 만들고 filepaths.xml 파일을 생성했고


<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path name="external_files" path="."/>
</paths>



MP4 파일을 공유할때, 아래와 같이 파일을 공유했다.


Uri videoUrl = FileProvider.getUriForFile(ReviewPlayerActivity.this, Provider 의 Authorities 명, tempFile);
Intent videoSharingIntent = new Intent(Intent.ACTION_SEND);
videoSharingIntent.setType("video/*");
videoSharingIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
videoSharingIntent.putExtra(Intent.EXTRA_STREAM, videoUrl);
startActivity(Intent.createChooser(videoSharingIntent, "Share video using"));



참고 :

https://stackoverflow.com/a/38858040/3897810

반응형