내 앱에서 다른 앱으로 파일을 안전하게 제공하려면
콘텐츠 URI 형식으로 파일에 대한 보안 핸들입니다. Android
FileProvider
구성요소는
. 이 강의에서는
FileProvider
를 앱에 구현하고
다른 앱에 제공할 파일을 지정할 수 있습니다.
참고: FileProvider
클래스는
AndroidX 핵심 라이브러리. 정보
자세히 알아보려면
종속 항목 선언.
FileProvider 지정
앱의 FileProvider
를 정의하려면
매니페스트를 참조하세요 이 항목은 콘텐츠 URI 생성에 사용할 권한을 지정하고
앱이 공유할 수 있는 디렉터리를 지정하는 XML 파일의 이름입니다.
다음 스니펫은 매니페스트에
<provider>
요소가 포함되어 있습니다.
FileProvider
클래스, 권한 및
XML 파일 이름:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp"> <application ...> <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.myapp.fileprovider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider> ... </application> </manifest>
이 예에서 android:authorities
속성은
API가 생성한 콘텐츠 URI에
FileProvider
입니다.
이 예에서 권한은 com.example.myapp.fileprovider
입니다. 개인용
앱의
문자열 'fileprovider'가 포함된 android:package
값 추가됩니다. 자세히 알아보기
자세한 내용은
콘텐츠 URI 및
android:authorities
속성
<meta-data>
하위 요소
<provider>
는 원하는 디렉터리를 지정하는 XML 파일을 가리킵니다.
공유할 수 있습니다. android:resource
속성은
.xml
확장자로 대체되었습니다.이 파일의 콘텐츠는 다음 섹션에서 설명합니다.
공유 가능 디렉터리 지정
앱 매니페스트에 FileProvider
를 추가한 후에는
공유하려는 파일이 포함된 디렉터리를 지정해야 합니다.
먼저 res/xml/
디렉터리에 filepaths.xml
파일을 만듭니다.
하위 디렉토리가 있습니다. 이 파일에서
확인할 수 있습니다 다음 스니펫은
res/xml/filepaths.xml
또한 이 스니펫은 하위 디렉터리를 공유하는 방법을 보여줍니다.
files/
디렉터리의 파일 이름을 지정합니다.
<paths> <files-path path="images/" name="myimages" /> </paths>
이 예에서 <files-path>
태그는
앱 내부 저장소의 files/
디렉터리. path
속성
files/
의 images/
하위 디렉터리를 공유합니다. name
속성은 경로 세그먼트를 추가하도록 FileProvider
에 지시합니다.
files/images/
하위 디렉터리에 있는 파일의 콘텐츠 URI에 대한 myimages
<paths>
요소에는 여러 하위 요소가 있을 수 있으며 각 하위 요소는 서로 다른
공유할 수 있습니다. <files-path>
요소 외에도 다음 작업을 할 수 있습니다.
<external-path>
요소를 사용하여 외부 저장소의 디렉터리를 공유합니다.
<cache-path>
요소를 사용하여 내부 캐시의 디렉터리 공유
디렉터리 공유 디렉터리를 지정하는 하위 요소에 대해 자세히 알아보려면
FileProvider
참조 문서
참고: XML 파일을 사용해야만 원하는 디렉터리를 지정할 수 있습니다. 공유 프로그래매틱 방식으로 디렉터리를 추가할 수는 없습니다.
이제 FileProvider
의 완전한 사양이 생겼습니다.
앱의 files/
디렉터리에 있는 파일의 콘텐츠 URI를 생성하는
내부 저장소 또는 files/
의 하위 디렉터리에 있는 파일 앱에서
콘텐츠 URI에 있으며, 이 파일에는
요소 <provider>
개 (com.example.myapp.fileprovider
),
경로 myimages/
및 파일 이름.
예를 들어FileProvider
코드 스니펫에 대해 살펴보고
default_image.jpg
, FileProvider
는
다음 URI:
content://com.example.myapp.fileprovider/myimages/default_image.jpg
추가 관련 정보는 다음을 참조하세요.