728x90
반응형

앱내에서 SEND action을 통해 데이터 정보를 공유할때

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);

로 시작하는 intent 에서 에레가 발생했다.

 

정확한 위치는

shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share using"));

에서 에러가 났는데, 해당 에러 내용은 

 

E/DatabaseUtils: Writing exception to parcel
    java.lang.SecurityException: Permission Denial: reading androidx.core.content.FileProvider uri content://프로젝트이름.FileProvider/파일경로 from pid=28663, uid=1000 requires the provider be exported, or grantUriPermission()
        at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:835)
        at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:695)
        at android.content.ContentProvider$Transport.query(ContentProvider.java:234)
        at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:107)
        at android.os.Binder.execTransactInternal(Binder.java:1179)
        at android.os.Binder.execTransact(Binder.java:1143)

 

였다. 

 

 provider be exported, or grantUriPermission() 로 stack over flow를 검색해보고 나왔던

 

manifest provider 에 exported=true 옵션과

grantUriPermission()를 모두 해도 같은 에러가 나왔다.

 

결국 

shareIntent.setClipData(ClipData.newRawUri("", uri));
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "Share using"));

 

 setClipdata를 넣어서 에러 해결

728x90
반응형

+ Recent posts