【发布时间】:2019-03-08 08:30:08
【问题描述】:
我正在使用此代码从 URI 获取真实路径。它正在工作 棉花糖但不是奥利奥:
private String getPathNew(Activity activity, Uri uri) {
if (isDownloadsDocument(uri)) {
final String id = DocumentsContract.getDocumentId(uri);
final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
return getDataColumn(activity, contentUri, null, null);
}
return null;
}
public static String getDataColumn(Context context, Uri uri, String
selection, String[] selectionArgs) {
Cursor cursor = null;
final String column = "_data";
final String[] projection = {column};
try {
cursor = context.getContentResolver().query(uri, projection, selection,
selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
final int column_index = cursor.getColumnIndexOrThrow(column);
return cursor.getString(column_index);
}
} finally {
if (cursor != null)
cursor.close();
}
return null;
}
我做错了什么?
【问题讨论】:
-
@shizhen 不,不是。这是一个奇怪的“bug”,只出现在最近的 Android 版本中,比如 Oreo。
-
@ChenLiYong 此错误是由于Android 7.0 中首先引入的文件策略的更改引起的。您正在寻找的问题在这里stackoverflow.com/questions/43178911/…。
-
@KartikOhri 很有趣。谢谢!
-
这个解决方案对我很有效:stackoverflow.com/questions/52775398/…
标签: android android-8.0-oreo file-sharing file-copying android-8.1-oreo