Android
FileProvider
수색…
파일 공유하기
이 예에서는 파일을 다른 앱과 공유하는 방법을 배웁니다. 이 코드는 다른 모든 형식에서도 작동하지만 pdf 파일을 사용합니다.
로드맵 :
공유하려는 파일이있는 디렉토리를 지정하십시오.
파일을 공유하기 위해 우리는 응용 프로그램간에 안전한 파일 공유를 허용하는 클래스 인 FileProvider를 사용합니다. FileProvider는 사전 정의 된 디렉토리의 파일 만 공유 할 수 있으므로이를 정의합시다.
경로가 포함될 새 XML 파일을 만듭니다 (예 : res / xml / filepaths.xml).
경로 추가
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <files-path name="pdf_folder" path="documents/"/> </paths>
FileProvider를 정의하고 파일 경로와 연결합니다.
이는 매니페스트에서 수행됩니다.<manifest>
...
<application>
...
<provider
android:name="android.support.v4.context.FileProvider"
android:authorities="com.mydomain.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
...
</application>
...
</manifest>
파일에 대한 URI 생성
파일을 공유하려면 파일의 식별자를 제공해야합니다. 이는 URI (Uniform Resource Identifier)를 사용하여 수행됩니다.// We assume the file we want to load is in the documents/ subdirectory
// of the internal storage
File documentsPath = new File(Context.getFilesDir(), "documents");
File file = new File(documentsPath, "sample.pdf");
// This can also in one line of course:
// File file = new File(Context.getFilesDir(), "documents/sample.pdf");
Uri uri = FileProvider.getUriForFile(getContext(), "com.mydomain.fileprovider", file);
코드에서 볼 수 있듯이 먼저 파일을 나타내는 새로운 File 클래스를 만듭니다. URI를 얻으려면 FileProvider에 문의하십시오. 두 번째 인수는 중요합니다. FileProvider의 권한을 전달합니다. 매니페스트에 정의 된 FileProvider의 권한과 같아야합니다.
다른 앱과 파일 공유
우리는 ShareCompat를 사용하여 다른 응용 프로그램과 파일을 공유합니다.Intent intent = ShareCompat.IntentBuilder.from(getContext())
.setType("application/pdf")
.setStream(uri)
.setChooserTitle("Choose bar")
.createChooserIntent()
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Context.startActivity(intent);
선택기는 사용자가 파일을 공유 할 앱을 선택할 수있는 메뉴입니다. 플래그 Intent.FLAG_GRANT_READ_URI_PERMISSION은 URI에 대한 임시 읽기 액세스 권한을 부여하는 데 필요합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow