<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path path="Android/data/${applicationId}/" name="files_root" /> <root-path name="root" path="/" /> </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, "공유 타이틀")); } |