我有这个方法:

public String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(contentUri, proj, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

不幸的是,编译器在以下方面向我显示了一个问题:

Cursor cursor = managedQuery(contentUri, proj, null, null, null);

因为managedQuery()是不推荐的.

我怎么能不使用managedQuery()就重写这个方法呢?

推荐答案

您可以将其替换为context.getContentResolver().queryLoaderManager(您需要使用兼容包来支持API版本11之前的设备).

然而,看起来您只使用了一次查询:您可能根本不需要它.也许这样行吗?

public String getRealPathFromURI(Uri contentUri) {
    String res = null;
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
    if(cursor.moveToFirst()){;
       int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
       res = cursor.getString(column_index);
    }
    cursor.close();
    return res;
}

Android相关问答推荐

Android Kotlin DSL Gradle找不到自定义存储库中的依赖项

ENV变量在gradle进程中没有更新

使用Kotlin的SD卡

译码BLE血糖仪特征值

Jetpack编写错误(java.lang.NoSuchMethodError:无接口方法startRestartGroup)

找不到类MultipartBody;的序列化程序

设置文本 colored颜色 动画时如何减少重新组合?

使用lazyColumn迁移paging3的旧代码

如何在 kotlin 中接收带有和不带有可空对象的集合并保持引用相同

如何使用滑行加载媒体的专辑封面?

单击按钮时不显示 Toast 消息

通过 adb 解压并重新安装后 Android 应用程序崩溃

当手表与手机断开连接时,有没有办法在我的 Wear OS 应用程序中显示操作系统级别的图标?

在 jetpack compose 中交替使用 View.INVISIBLE

在 Compose 中停止键盘将顶部应用栏推离屏幕

在 Jetpack Compose 中包装内容

状态值更改时屏幕未重新组合 - Jetpack Compose

如何使用jetpack compose实现布局,其中图标在列布局上是绝对位置

compose :为什么以记住启动的列表触发方式与快照不同

AndroidX Room 生成类错误:类是公共的,应在名为 class.java 的文件中声明