java - 已弃用的 ManagedQuery() 问题

标签 java android deprecated

我有这个方法:

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;
}

关于java - 已弃用的 ManagedQuery() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12714701/

相关文章:

java - 安卓工作室 : Failed to execute onClick

python - nosetest 弃用警告

java - Retrofit 不包含参数

android - 我们如何在 google glass 上启用 Debug模式以在 google glass 上测试 android 应用程序?

Android:禁用平板电脑的应用程序

c# - 如何在当前代码中限制给定方法/类的使用

uiview - Cocos2d 2.0 添加 UIView 到 CClayer openglview 已弃用

java - 具有线程和阻塞队列的消费者-生产者

java - 我丢失了 GAE 数据存储区中的数据 Google 应用引擎如何帮助恢复我的数据

java - 多对多 - 选择没有确定字段且结果数量有限的实体集合