【发布时间】:2016-04-22 14:10:26
【问题描述】:
我能够从通知栏获取的 URI 中获取文件路径,但我只能从从 Android Snackbar 接收到的 URI 中获取文件路径。
用于获取路径的当前函数:
注意:这适用于 Marshmallow 之前的 Android 版本。
private String extractContentUri(Uri uri) {
Cursor cursor = null;
try {
cursor = getContentResolver().query(uri, null, null, null, null);
Log.d("CHECK", "COUNT" + cursor.getCount());
if (cursor != null && cursor.moveToFirst()) {
Log.d("CHECK", "CURSOR !NULL");
launchedFile = cursor.getString(cursor.getColumnIndexOrThrow("_data"));
Log.d("CHECK", "==" + launchedFile);
return launchedFile;
}
} catch (IllegalArgumentException e) {
} finally {
Log.d("CHECK", "{finally} ==" + launchedFile);
if (cursor != null) {
cursor.close();
cursor = null;
}
}
return null;
}
在android M中,访问from通知栏和snackbar时获得的URI是不同的。
- 来自通知栏的URI:
content://downloads/all_downloads/1449 - 来自小吃店的 URI:
content://downloads/my_downloads/1449
cursor = getContentResolver().query(uri, null, null, null, null);
这里的 cursor.getCount() 总是 0 用于小吃吧。
【问题讨论】:
-
@Alqueraf:添加了代码 sn-p
标签: android android-6.0-marshmallow android-snackbar snackbar android-6.0.1-marshmallow