无法从Android M中的uri获取文件路径

无法从Android M中的uri获取文件路径,android,android-6.0-marshmallow,android-snackbar,snackbar,android-6.0.1-marshmallow,Android,Android 6.0 Marshmallow,Android Snackbar,Snackbar,Android 6.0.1 Marshmallow,我可以从通知栏获取的URI中获取文件路径,但只能从Android Snackbar接收的URI中获取 用于获取路径的当前函数: 注意:这适用于棉花糖之前的Android版本 private String extractContentUri(Uri){ 游标=空; 试一试{ cursor=getContentResolver().query(uri,null,null,null,null); Log.d(“CHECK”,“COUNT”+cursor.getCount()); if(cursor!=

我可以从通知栏获取的URI中获取文件路径,但只能从Android Snackbar接收的URI中获取

用于获取路径的当前函数:

注意:这适用于棉花糖之前的Android版本

private String extractContentUri(Uri){
游标=空;
试一试{
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(“_数据”);
Log.d(“检查”,即“=”+启动文件);
返回发射文件;
}
}捕获(IllegalArgumentException e){
}最后{
Log.d(“CHECK”,“{finally}==”+launchedFile);
如果(光标!=null){
cursor.close();
游标=空;
}
}
返回null;
}
在android M中,从通知栏和snackbar访问时获得的URI是不同的

  • 通知栏中的URI:
    content://downloads/all_downloads/1449
  • snackbar中的URI:
    content://downloads/my_downloads/1449
cursor=getContentResolver().query(uri,null,null,null,null);

这里,snackbar的光标
.getCount()
始终为0。

您需要为Android 6及更高版本添加运行时权限。请检查运行时权限。

@Alqueraf:code snippet addedi如果是这种情况,那么它也不应该从通知栏工作,对吗?是的,如果是这种情况,但我可以从通知栏处理它。同样在安卓M中,从通知栏和snackbar访问时获得的uri是不同的。通知栏中的uri:content://downloads/all_downloads/1449 snackbar中的uri:content://downloads/my_downloads/1449 cursor=getContentResolver().query(uri,null,null,null,null);这里,对于snackbar,cursor.getCount()始终为0。