투케이2K

780. (Android/Java) 안드로이드 Intent.createChooser 사용해 파일 공유 수행 시 첨부 파일 추가 방법 - Intent.EXTRA_STREAM 본문

Android

780. (Android/Java) 안드로이드 Intent.createChooser 사용해 파일 공유 수행 시 첨부 파일 추가 방법 - Intent.EXTRA_STREAM

투케이2K 2024. 4. 24. 19:48

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

 

        // ---------------------------------------------------------------
        // [로직 처리 실시]
        // ---------------------------------------------------------------
        try {

            /**
             * -----------------------------------------------------
             * 1. 사전 : AndroidManifest.xml 파일에 provider 지정
             *
             * <provider
             *    android:name="androidx.core.content.FileProvider"
             *    android:authorities="${applicationId}.provider"
             *    android:exported="false"
             *    android:grantUriPermissions="true">
             *    <meta-data
             *           android:name="android.support.FILE_PROVIDER_PATHS"
             *           android:resource="@xml/provider_paths" />
             * </provider>
             * -----------------------------------------------------
             * 2. 사전 : provider.xml 파일에 path 경로 설정
             *
             * <?xml version="1.0" encoding="utf-8"?>
             * <paths xmlns:android="http://schemas.android.com/apk/res/android">
             *     <files-path name="files" path="."/>
             *     <external-files-path name="external_files_path" path="." />
             *     <external-path name="external_files" path="."/>
             * </paths>
             * -----------------------------------------------------
             * */

            // -----------------------------------------------------
            // TODO [파일 경로] : data/data/com.example.javaproject/files/test.txt
            // -----------------------------------------------------
            // TODO [앱 내부 캐시 저장소] : [권한 없이도 읽기 , 쓰기 가능]
            // -----------------------------------------------------
            File file = new File(getFilesDir(), "test.txt");


            // -----------------------------------------------------
            // [URL 지정]
            // -----------------------------------------------------
            Uri fileUri = FileProvider.getUriForFile(A_Intro.this, getApplicationContext().getPackageName() + ".provider", file);


            // -----------------------------------------------------
            // [Intent 지정]
            // -----------------------------------------------------
            Intent intentShareFile = new Intent(Intent.ACTION_SEND);
            intentShareFile.setType("text/plain"); // TODO [.txt 파일 타입]
            intentShareFile.putExtra(Intent.EXTRA_STREAM, fileUri); // TODO [파일 주소]
            intentShareFile.putExtra(Intent.EXTRA_SUBJECT, "My subject");
            // intentShareFile.putExtra(Intent.EXTRA_TEXT, "My text");
            startActivity(Intent.createChooser(intentShareFile, "Choose")); // TODO [파일 공유]
        }
        catch (Exception e){
            e.printStackTrace();
        }

 

반응형
Comments