Устаревшая проблема с ManagedQuery ()

У меня есть этот метод:

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() ?

Solutions Collecting From Web of "Устаревшая проблема с ManagedQuery ()"

Вы можете заменить его на context.getContentResolver().query LoaderManager и 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; } 
 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(); } } } 

Вам нужно инициализировать курсор becauese, он будет близок до начала метода или где-то еще

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