我能够从通知栏中获取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中,访问来自通知栏和快餐栏时获得的uri是不同的。 来自通知栏的uri:content:// downloads / all_downloads / 1449 来自snackbar的uri:content:// downloads / my_downloads / 1449
cursor = getContentResolver()。query(uri,null,null,null,null); 这里的小吃栏上的cursor.getCount()始终为0。