2

我能够从从通知栏获取的 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
  • 来自小吃店的 URI:content://downloads/my_downloads/1449
cursor = getContentResolver().query(uri, null, null, null, null);

此处的光标.getCount()始终为 0 用于小吃吧。

4

1 回答 1

0

您需要为 Android 6 及以上版本添加运行时权限。请检查此项以获取运行时权限。

于 2016-04-26T08:03:20.210 回答