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

时间:2016-04-22 14:10:26

标签: android android-6.0-marshmallow android-snackbar snackbar android-6.0.1-marshmallow

我能够从通知栏中获取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。

1 个答案:

答案 0 :(得分:0)

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