두 가지 옵션이 있습니다.
당신은 안드로이드 문서의 완전하고 업데이트 예를 가지고 FileProvider
같은 응용 프로그램 등록 : 어떤 타사 응용 프로그램에 대한 액세스를 제공하려면 https://developer.android.com/reference/android/support/v4/content/FileProvider.html
것은,이 해결 방법을 사용할 수 있습니다 :
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
(...)
List<ResolveInfo> resInfoList = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
context.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
저장을 대용량 저장 장치에있는 파일을 (SDCARD)
예를 들어 6,
:
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/newDir");
dir.mkdirs();
File file = new File(dir, "filename");
FileOutputStream f = new FileOutputStream(file);
...
어느
그것은 당신의 목표에 따라 선택합니다.
사용자가 usb를 통해 파일에 액세스 할 수있게하려는 경우 앱을 제거한 후에도 파일을 사용할 수있게하려는 경우 해당 파일의 "사용 된 공간"수가 앱에 추가되지 않도록 ... "대량 저장 장치 방식"은 갈 길입니다.
이 파일을 앱에 "묶어두기"를 원하면 앱을 설치 한 동안에 만 사용할 수 있습니다. 앱을 통해서만 액세스 할 수 있습니다. "FileProvider 방식"이 최선의 방법입니다.
안드로이드에서 "대용량 기억 장치 방식"은 합리적인 데이터가 아닌 경우 더 선호됩니다. Android 사용자는 '체인'/ 제한을 좋아하지 않습니다.
감사합니다. SD 메모리 카드를 사용하기 위해 Context.getExternalDir (null)을 사용하여 애플리케이션 공개 스토리지를 사용하기로했습니다. 그냥 호기심에서, 당신의 해결 방법은 어떻게 작동합니까? – woojoo666
해결 방법은 의도를 처리 할 수있는 응용 프로그램 목록을 검색 한 다음 모든 항목에 권한을 부여하는 것 (하나씩)을 기반으로합니다. 그다지 아름답지는 않지만 (안드로이드는 아마도 이것을 이미 통합해야만 할 것입니다.) 그러나 일을 끝내게됩니다. –
소리가 나에게 충분 해, 고마워! – woojoo666