Problema de ManagedQuery () en desuso

Tengo este método:

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

Lamentablemente, el comstackdor me muestra un problema en:

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

Porque managedQuery() está en desuso.

¿Cómo podría reescribir este método sin usar managedQuery() ?

Puede reemplazarlo con context.getContentResolver().query y LoaderManager (deberá usar el paquete de compatibilidad para admitir dispositivos antes de API versión 11).

Sin embargo, parece que solo está utilizando la consulta una vez: es probable que ni siquiera lo necesite. Tal vez esto funcionaría?

 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; } 
 public void getBrowserHist(Context context) { Cursor mCur = context.getContentResolver().query(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, null); mCur.moveToFirst(); if (mCur != null && mCur.moveToFirst() && mCur.getCount() > 0) { while (mCur.isAfterLast() == false) { Log.e("hist_titleIdx", mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX)); Log.e("hist_urlIdx", mCur.getString(Browser.HISTORY_PROJECTION_URL_INDEX)); mCur.moveToNext(); } } } 

necesita inicializar el cursor porque estará cerca antes del inicio del método o en otro lugar

 cursor = null; public void method(){ // do your stuff here cursor.close(); }