안드로이드 파일공유 PROVIDER
<?xml version="1.0" encoding="utf-8"?> </paths> |
또는
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
URI얻어오는 방법
Uri contentUri = FileProvider.getUriForFile(getContext(),
getApplicationContext().getPackageName() + ".fileprovider", 파일경로);
content://패키지명.fileprovider/root/data/data/파일경로 형태로 uri가 생성 된다.
/** * 멀티 파일 공유 * @param shareFiles */ public void shareMultiFIles(File[] shareFiles) { final Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND_MULTIPLE); // 멀티파일 보내기 // intent.setPackage("com.google.android.gm"); // 지메일로 보내기 // 파일형태에 맞는 type설정 // intent.setType("plain/text"); // text 형태로 전달 intent.setType("*/*"); // 모든 공유 형태 전달 intent.putExtra(Intent.EXTRA_SUBJECT, "공유 제목"); // 제목 intent.putExtra(Intent.EXTRA_TEXT, "공유 내용"); // 내용 if (shareFiles != null && shareFiles.length > 0) { ArrayList<Uri> uris = new ArrayList<Uri>(); for (File file : shareFiles) { Uri contentUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", file); // manifest의 ${applicationId}.fileprovider uris.add(contentUri); Log.i(TAG, "contentUri="+contentUri.toString()); } intent.putExtra(Intent.EXTRA_STREAM, uris); // 멀티 파일 전송 } intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 공유 앱에 권한 주기 intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); // 공유 앱에 권한 주기 startActivity(Intent.createChooser(intent, "공유 타이틀")); } |
/** * 단일 파일 공유 * @param shareFile */ public void shareFIle(File shareFile) { final Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); // 단일파일 보내기 // intent.setPackage("com.google.android.gm"); // 지메일로 보내기 // 파일형태에 맞는 type설정 MimeTypeMap type = MimeTypeMap.getSingleton(); intent.setType(type.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(shareFile.getPath()))); // intent.setType("plain/text"); // text 형태로 전달 // intent.setType("*/*"); // 모든 공유 형태 전달 intent.putExtra(Intent.EXTRA_SUBJECT, "공유 제목"); // 제목 intent.putExtra(Intent.EXTRA_TEXT, "공유 내용"); // 내용 Log.i(TAG, "test.file.getpath="+shareFile.getPath()); if (shareFile != null) { Uri contentUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".fileprovider", shareFile); // manifest의 ${applicationId}.fileprovider
intent.putExtra(Intent.EXTRA_STREAM, contentUri); // 단일 파일 전송 } intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 공유 앱에 권한 주기 intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); // 공유 앱에 권한 주기 startActivity(Intent.createChooser(intent, "공유 타이틀")); } |
'프로그래밍 > Android (Java)' 카테고리의 다른 글
웹 브라우저 링크로 앱 실행 방법 (유사 딥링크, 동적링크) (0) | 2019.09.30 |
---|---|
android 에서 기기에 저장된 파일 이름 변경하기 (0) | 2019.09.20 |
지오코딩 GeoCoding (주소,지명 ↔ 위도,경도 변환) 예제 (0) | 2019.09.06 |
폴리라인 (polyline) 그리기 (0) | 2019.09.05 |
권한 여부 체크하기 (0) | 2019.09.04 |