FileProvider의 기본 기능에는 파일에 대한 콘텐츠 URI 생성이 포함되어 있으므로 코드에서 하위 클래스를 정의할 필요가 없습니다. 대신 XML에 전적으로 지정하여 앱에 FileProvider를 포함할 수 있습니다. FileProvider 구성 요소 자체를 지정하려면 앱 매니페스트에 요소를 추가합니다. android.support.v4.content.FileProvider에 android:name 속성을 설정합니다. android:authority 속성을 제어하는 도메인을 기반으로 URI 기관에 설정합니다. 예를 들어 도메인mydomain.com 제어하는 경우 기관 com.mydomain.fileprovider를 사용해야 합니다. android:exported 속성을 false로 설정합니다. 파일 공급자는 공개할 필요가 없습니다. android:grantUriPermissions 속성을 true로 설정하여 파일에 대한 임시 액세스 권한을 부여할 수 있도록 합니다. 예: xml 리소스 폴더에 xml 파일(예: file_provider_paths.xml) 만들기: 요소와 해당 자식을 프로젝트의 XML 파일에 넣습니다. 예를 들어 res/xml/file_paths.xml이라는 새 파일에 추가할 수 있습니다. 이 파일을 FileProvider에 연결하려면 요소를 FileProvider를 정의하는 요소의 자식으로 추가합니다. android.support.FILE_PROVIDER_PATHS에 요소의 “android:name” 특성을 설정합니다.

요소의 “android:resource” 특성을 @xml/file_path로 설정합니다(.xml 확장인을 지정하지 않아도 됩니다). 예: ContentProvider는 데이터를 캡슐화하고 다른 응용 프로그램에 제공하는 Android 구성 요소입니다. 여러 응용 프로그램 간에 데이터를 공유해야 하는 경우에만 필요합니다. 예를 들어 연락처 데이터는 ContentProvider의 하위 클래스인 ContactsProvider를 사용하여 다른 응용 프로그램과 공유됩니다. YourActivity.java: 이 예제에서는 비디오 플레이어 앱에서 파일을 열고 싶습니다. 우리는 기본 FileProvider 또는 우리가 이전에 만든 우리의 사용자 정의 파일 공급자를 사용합니다. 컨텍스트의 경우 활동 내에 있는 경우 이 것을 사용할 수 있습니다. grantUriPermission를 호출하고 의도에 적절한 플래그를 추가해야합니다. 앱 매니페스트에 FileProvider를 추가한 후에는 공유하려는 파일이 포함된 디렉터리를 지정해야 합니다.

디렉터리를 지정하려면 프로젝트의 res/xml/하위 디렉토리에 파일 filepaths.xml을 만들어 시작합니다. 이 파일에서는 각 디렉터리에 대한 XML 요소를 추가하여 디렉터리를 지정합니다. 다음 코드 조각은 res/xml/filepaths.xml의 내용의 예를 보여 주며, 이에 대한 예는 다음과 같은 것입니다. 스니펫은 또한 내부 저장소 영역에서 파일/디렉터리의 하위 디렉터리를 공유하는 방법을 보여 줍니다: 예를 들어 이 단원에서 스니펫에 따라 FileProvider를 정의하고 파일 default_image.jpg에 대한 콘텐츠 URI를 요청하는 경우, FileProvider는 다음과 같은 URI를 반환 : 몇 주 전에 나는 안드로이드 전화에있는 PDF 리더 응용 프로그램에서 내부 PDF 파일을 여는 작업을 받았다. 나는 그것이 간단 할 것이라고 생각했지만, 상황이 복잡 밝혀졌다. FileProvider에 대한 Google의 문서는 혼란스럽고 구체적인 예가 부족한 것으로 판명되었습니다. 그럼에도 불구하고, 나는 이 문제를 해결하기 위해 ContentProvider를 사용해야 한다는 것을 알았다. 이전 시리즈의 기사에서는 DownloadManager를 살펴보았고 DownloadManager가 실제로 다운로드한 콘텐츠를 다른 앱과 공유하는 것을 처리하는 것을 보았습니다. 그러나 실제로이 작업을 수행해야하고 DownloadManager를 사용하지 않는 경우 어떻게해야합니까? 이러한 것들에 대한 일반적인 경우는 우리가 다른 응용 프로그램과 콘텐츠를 공유하거나, 이전 시리즈의 예에서와 같이, 콘텐츠는 우리의 응용 프로그램이 지원하지 않는 형식이었기 때문에 우리는 장치의 다른 응용 프로그램에 해당 콘텐츠의 표시를 연기하고 싶었다 hich는 콘텐츠 유형을 지원했습니다 – 예에서 이것은 PDF였습니다.