1

我能够从通知栏获取uri的文件路径,但是我可以从Android Snackbar收到的uri中获取它。无法从Android中的uri获取文件路径M

用于获取路径的当前函数: 注意:这适用于棉花糖之前版本的Android版本。而从通知栏和从小吃吧是不同的访问 私人字符串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:内容:内容://下载/ all_downloads/1449 从小吃吧URI。//下载/ my_downloads/1449

光标= getContentResolver()的查询(URI,NULL,NULL,NULL,NULL ); 这里的cursor.getCount()对于零食栏总是为0。

+0

一些代码可能? :) – Alqueraf

+0

@Alqueraf:添加代码片段 –

回答

0

您需要为Android 6及以上版本添加运行时权限。运行时间权限请检查this

+0

如果是这样的话,那么它不应该从通知栏也工作,对吧? –

+0

雅如果这是这种情况 –

+1

但我能够处理它从通知栏。 也 在Android M中,访问通知栏和快餐栏时获得的URI是不同的。 来自通知栏的URI:content:// downloads/all_downloads/1449 from snackbar:from:downloads/my_downloads/1449 cursor = getContentResolver()。query(uri,null,null,null,null);这里cursor.getCount()对于快餐栏总是为0。 –