private void checkSystemDownloadsDirectoryAccess() { if (mDownloadDirectoryOverrideURI != null && !mAlwaysUseFallbackDir) { DocumentFile dir = DocumentFile.fromTreeUri(mContext, mDownloadDirectoryOverrideURI); mHasSystemDirectoryAccess = dir.exists() && dir.canWrite(); return; } File downloadsDir = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS); if (downloadsDir != null && downloadsDir.canWrite() && !mAlwaysUseFallbackDir) { mDownloadDirectory = downloadsDir; mHasSystemDirectoryAccess = true; } else { mDownloadDirectory = mFallbackDownloadDirectory; mHasSystemDirectoryAccess = false; } Log.d("DCCManager", "Download directory: " + mDownloadDirectory.getAbsolutePath()); }
/** * 指定したUriが存在する時にその下にファイルを生成するためのpathを返す * @param context * @param treeUri * @param mime * @param fileName * @return */ @Nullable @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static File createStorageFile(@NonNull final Context context, final Uri treeUri, final String mime, final String fileName) { Log.i(TAG, "createStorageFile:" + fileName); if (BuildCheck.isLollipop()) { if ((treeUri != null) && !TextUtils.isEmpty(fileName)) { final DocumentFile saveTree = DocumentFile.fromTreeUri(context, treeUri); final DocumentFile target = saveTree.createFile(mime, fileName); final String path = UriHelper.getPath(context, target.getUri()); if (!TextUtils.isEmpty(path)) { return new File(path); } } } return null; }
/** * 指定したUriが存在する時にその下にファイルを生成するためのpathを返す * @param context * @param treeUri * @param mime * @param fileName * @return */ @Nullable @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static File createStorageFile(@NonNull final Context context, final Uri treeUri, final String mime, final String fileName) { Log.i(TAG, "createStorageFile:" + fileName); if (BuildCheck.isLollipop()) { if ((treeUri != null) && !TextUtils.isEmpty(fileName)) { final DocumentFile saveTree = DocumentFile.fromTreeUri(context, treeUri); final DocumentFile target = saveTree.createFile(mime, fileName); final String path = UriHelper.getPath(context, target.getUri()); if (!TextUtils.isEmpty(path)) { return new File(path); } } } return null; }
/** * 指定したidに対応するUriが存在する時にその下にファイルを生成するためのpathを返す * @param context * @param treeId * @return */ @Nullable @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static File createStorageDir(@NonNull final Context context, final int treeId) { if (BuildCheck.isLollipop()) { final Uri treeUri = getStorageUri(context, treeId); if (treeUri != null) { final DocumentFile saveTree = DocumentFile.fromTreeUri(context, treeUri); final String path = UriHelper.getPath(context, saveTree.getUri()); if (!TextUtils.isEmpty(path)) { return new File(path); } } } return null; }
/** * 指定したidに対応するUriが存在する時にその下にファイルを生成するためのpathを返す * @param context * @param treeId * @return */ @Nullable @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static File createStorageDir(@NonNull final Context context, final int treeId) { if (BuildCheck.isLollipop()) { final Uri treeUri = getStorageUri(context, treeId); if (treeUri != null) { final DocumentFile saveTree = DocumentFile.fromTreeUri(context, treeUri); final String path = UriHelper.getPath(context, saveTree.getUri()); if (!TextUtils.isEmpty(path)) { return new File(path); } } } return null; }
/** * 指定したidに対応するUriが存在する時にその下に生成したファイルのrawファイルディスクリプタを返す * @param context * @param treeUri * @param mime * @param fileName * @return */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static int createStorageFileFD(@NonNull final Context context, final Uri treeUri, final String mime, final String fileName) { Log.i(TAG, "createStorageFileFD:" + fileName); if (BuildCheck.isLollipop()) { if ((treeUri != null) && !TextUtils.isEmpty(fileName)) { final DocumentFile saveTree = DocumentFile.fromTreeUri(context, treeUri); final DocumentFile target = saveTree.createFile(mime, fileName); try { final ParcelFileDescriptor fd = context.getContentResolver().openFileDescriptor(target.getUri(), "rw"); return fd != null ? fd.getFd() : 0; } catch (final FileNotFoundException e) { Log.w(TAG, e); } } } return 0; }
public static DocumentFile getDestinationDirectory(Context context) { if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean(PREFERENCE_CUSTOMIZE_DESTINATION, false)) { String path = PreferenceManager.getDefaultSharedPreferences(context).getString(PREFERENCE_DESTINATION, null); if (path != null) { //There should be no way to enter here on api level < kitkat DocumentFile treeDocumentFile = DocumentFile.fromTreeUri(context, Uri.parse(path)); if (treeDocumentFile.canWrite()) { //Checks for FLAG_DIR_SUPPORTS_CREATE on directories return treeDocumentFile; } else { //Maybe permission was revoked Log.w("SharePlugin", "Share destination is not writable, falling back to default path."); } } } try { getDefaultDestinationDirectory().mkdirs(); } catch (Exception e) { e.printStackTrace(); } return DocumentFile.fromFile(getDefaultDestinationDirectory()); }
/** * 指定したidに対応するUriが存在する時にその下に生成したファイルのrawファイルディスクリプタを返す * @param context * @param treeUri * @param mime * @param fileName * @return */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static int createStorageFileFD(@NonNull final Context context, final Uri treeUri, final String mime, final String fileName) { Log.i(TAG, "createStorageFileFD:" + fileName); if (BuildCheck.isLollipop()) { if ((treeUri != null) && !TextUtils.isEmpty(fileName)) { final DocumentFile saveTree = DocumentFile.fromTreeUri(context, treeUri); final DocumentFile target = saveTree.createFile(mime, fileName); try { final ParcelFileDescriptor fd = context.getContentResolver().openFileDescriptor(target.getUri(), "rw"); return fd != null ? fd.getFd() : 0; } catch (final FileNotFoundException e) { Log.w(TAG, e); } } } return 0; } }
final Uri treeUri = getStorageUri(context, treeId); if (treeUri != null) { DocumentFile tree = DocumentFile.fromTreeUri(context, treeUri); if (!TextUtils.isEmpty(dirs)) { final String[] dir = dirs.split("/");
final Uri treeUri = getStorageUri(context, treeId); if (treeUri != null) { DocumentFile tree = DocumentFile.fromTreeUri(context, treeUri); if (!TextUtils.isEmpty(dirs)) { final String[] dir = dirs.split("/");
String ext = getFileExtension(); if (mDownloadDirectoryOverrideURI != null && !mAlwaysUseFallbackDir) { DocumentFile dir = DocumentFile.fromTreeUri(mContext, mDownloadDirectoryOverrideURI); String mime = ext != null ? MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext)