Skip to content

Commit c099a02

Browse files
committed
see 02/27 log
1 parent 5cada7e commit c099a02

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

utilcode/lib/src/main/java/com/blankj/utilcode/util/UriUtils.java

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import android.content.ContentResolver;
44
import android.content.ContentUris;
5-
import android.content.CursorLoader;
65
import android.database.Cursor;
76
import android.net.Uri;
87
import android.os.Build;
@@ -59,8 +58,6 @@ public static File uri2File(@NonNull final Uri uri) {
5958
if (path != null) return new File(path);
6059
Log.d("UriUtils", uri.toString() + " parse failed. -> 0");
6160
return null;
62-
} else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {
63-
return getFileFromUri(uri, 1);
6461
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
6562
&& DocumentsContract.isDocumentUri(Utils.getApp(), uri)) {
6663
if ("com.android.externalstorage.documents".equals(authority)) {
@@ -70,15 +67,15 @@ public static File uri2File(@NonNull final Uri uri) {
7067
if ("primary".equalsIgnoreCase(type)) {
7168
return new File(Environment.getExternalStorageDirectory() + "/" + split[1]);
7269
}
73-
Log.d("UriUtils", uri.toString() + " parse failed. -> 2");
70+
Log.d("UriUtils", uri.toString() + " parse failed. -> 1");
7471
return null;
7572
} else if ("com.android.providers.downloads.documents".equals(authority)) {
7673
final String id = DocumentsContract.getDocumentId(uri);
7774
final Uri contentUri = ContentUris.withAppendedId(
7875
Uri.parse("content://downloads/public_downloads"),
7976
Long.valueOf(id)
8077
);
81-
return getFileFromUri(contentUri, 3);
78+
return getFileFromUri(contentUri, 2);
8279
} else if ("com.android.providers.media.documents".equals(authority)) {
8380
final String docId = DocumentsContract.getDocumentId(uri);
8481
final String[] split = docId.split(":");
@@ -91,18 +88,22 @@ public static File uri2File(@NonNull final Uri uri) {
9188
} else if ("audio".equals(type)) {
9289
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
9390
} else {
94-
Log.d("UriUtils", uri.toString() + " parse failed. -> 4");
91+
Log.d("UriUtils", uri.toString() + " parse failed. -> 3");
9592
return null;
9693
}
9794
final String selection = "_id=?";
9895
final String[] selectionArgs = new String[]{split[1]};
99-
return getFileFromUri(contentUri, selection, selectionArgs, 5);
96+
return getFileFromUri(contentUri, selection, selectionArgs, 4);
97+
} else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {
98+
return getFileFromUri(uri, 5);
10099
} else {
101100
Log.d("UriUtils", uri.toString() + " parse failed. -> 6");
102101
return null;
103102
}
103+
} else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {
104+
return getFileFromUri(uri, 7);
104105
} else {
105-
Log.d("UriUtils", uri.toString() + " parse failed. -> 7");
106+
Log.d("UriUtils", uri.toString() + " parse failed. -> 8");
106107
return null;
107108
}
108109
}
@@ -115,22 +116,30 @@ private static File getFileFromUri(final Uri uri,
115116
final String selection,
116117
final String[] selectionArgs,
117118
final int code) {
118-
CursorLoader cl = new CursorLoader(Utils.getApp());
119-
cl.setUri(uri);
120-
cl.setProjection(new String[]{"_data"});
121-
Cursor cursor = null;
119+
final Cursor cursor = Utils.getApp().getContentResolver().query(
120+
uri, new String[]{"_data"}, selection, selectionArgs, null);
121+
if (cursor == null) {
122+
Log.d("UriUtils", uri.toString() + " parse failed(cursor is null). -> " + code);
123+
return null;
124+
}
122125
try {
123-
cursor = cl.loadInBackground();
124-
int columnIndex = cursor.getColumnIndexOrThrow("_data");
125-
cursor.moveToFirst();
126-
return new File(cursor.getString(columnIndex));
126+
if (cursor.moveToFirst()) {
127+
final int columnIndex = cursor.getColumnIndex("_data");
128+
if (columnIndex > -1) {
129+
return new File(cursor.getString(columnIndex));
130+
} else {
131+
Log.d("UriUtils", uri.toString() + " parse failed(columnIndex: " + columnIndex + " is wrong). -> " + code);
132+
return null;
133+
}
134+
} else {
135+
Log.d("UriUtils", uri.toString() + " parse failed(moveToFirst return false). -> " + code);
136+
return null;
137+
}
127138
} catch (Exception e) {
128139
Log.d("UriUtils", uri.toString() + " parse failed. -> " + code);
129140
return null;
130141
} finally {
131-
if (cursor != null) {
132-
cursor.close();
133-
}
142+
cursor.close();
134143
}
135144
}
136145
}

0 commit comments

Comments
 (0)