不推荐使用ManagedQuery()问题

And*_*eaF 103 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);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,编译器向我显示了一个问题:

Cursor cursor = managedQuery(contentUri, proj, null, null, null);
Run Code Online (Sandbox Code Playgroud)

因为managedQuery()已弃用.

如何在不使用的情况下重写此方法managedQuery()

Fem*_*emi 250

您可以使用context.getContentResolver().query和替换它LoaderManager(在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;
}
Run Code Online (Sandbox Code Playgroud)