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。 –