Android 지원 라이브러리의 FileProvider를 사용하여 외부 파일과 내부 파일을 올바르게 공유 (OPEN 아님)하는 방법을 찾고 있습니다.
문서의 예에 따라
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.android.supportv4.my_files"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/my_paths" />
</provider>
다음과 같이 ShareCompat을 사용하여 파일을 다른 앱과 공유하십시오.
ShareCompat.IntentBuilder.from(activity)
.setStream(uri) // uri from FileProvider
.setType("text/html")
.getIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
FLAG_GRANT_READ_URI_PERMISSION data
은 EXTRA_STREAM
추가 값 (에 의해 설정 됨 setStream
) 이 아니라 의도 에 지정된 Uri에 대한 권한 만 부여하므로 작동하지 않습니다 .
공급자 로 설정 android:exported
하여 보안을 손상하려고 시도 true
했지만 FileProvider
내부적으로 자체 내보내기 여부를 내부적으로 확인하면 예외가 발생합니다.