Intereting Posts
Как избежать вызова обоих: onItemClicked и onTextChanged в AutoCompleteTextView Android – используйте OkHttp с Webview Обработка сеанса входа в facebook sdk в android Пакет конфликтует с существующим пакетом с тем же именем Не удалось создать интерактивное приложение на Android-устройстве: не удалось найти цель с хэш-строкой 'android-23' Передача данных между действиями в Android CertificateException – OpenSSLX509CertificateFactory $ ParsingException Как я могу использовать пользовательский шрифт во входной области метода ввода? ClassCastException при добавлении LayoutParams Улучшение производительности OpenCV Android – быстрое отслеживание объектов ExoPlayer – как играть в локальный mp3-файл Кинжал 2.10 / 2.11 инъекции Как очистить держатель поверхности при завершении работы медиаплеера? Неразрешенная ссылка: Kotlin нуждается в 2 сборках после очистки, чтобы получить код при использовании kapt Android – извлечение массива строк из ресурсов

Устаревшая проблема с 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(); }