@@ -70,6 +70,18 @@ public static Uri file2Uri(@NonNull final File file) {
70
70
* @return file
71
71
*/
72
72
public static File uri2File (@ NonNull final Uri uri ) {
73
+ File file = uri2FileReal (uri );
74
+ if (file != null ) return file ;
75
+ return copyUri2Cache (uri );
76
+ }
77
+
78
+ /**
79
+ * Uri to file.
80
+ *
81
+ * @param uri The uri.
82
+ * @return file
83
+ */
84
+ private static File uri2FileReal (@ NonNull final Uri uri ) {
73
85
Log .d ("UriUtils" , uri .toString ());
74
86
String authority = uri .getAuthority ();
75
87
String scheme = uri .getScheme ();
@@ -172,11 +184,8 @@ else if ("com.android.providers.downloads.documents".equals(authority)) {
172
184
}
173
185
}
174
186
175
- // copy file to accessible cache using streams
176
- InputStream is = uri2InputStream (uri );
177
- File file = new File (Utils .getApp ().getCacheDir (), "" + System .currentTimeMillis ());
178
- UtilsBridge .writeFileFromIS (file .getAbsolutePath (), is );
179
- return file ;
187
+ Log .d ("UriUtils" , uri .toString () + " parse failed. -> 1_1" );
188
+ return null ;
180
189
}// end 1_1
181
190
else if ("com.android.providers.media.documents" .equals (authority )) {
182
191
final String docId = DocumentsContract .getDocumentId (uri );
@@ -266,6 +275,14 @@ private static File getFileFromUri(final Uri uri,
266
275
}
267
276
}
268
277
278
+ private static File copyUri2Cache (Uri uri ) {
279
+ Log .d ("UriUtils" , "copyUri2Cache() called" );
280
+ InputStream is = uri2InputStream (uri );
281
+ File file = new File (Utils .getApp ().getCacheDir (), "" + System .currentTimeMillis ());
282
+ UtilsBridge .writeFileFromIS (file .getAbsolutePath (), is );
283
+ return file ;
284
+ }
285
+
269
286
/**
270
287
* uri to input stream.
271
288
*
0 commit comments