반응형
더 이상 사용되지 않는 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()
있습니까?
context.getContentResolver().query
and로 바꿀 수 있습니다 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();
}
}
}
메서드 시작 전에 닫히기 때문에 커서를 초기화해야합니다.
cursor = null;
public void method(){
// do your stuff here
cursor.close();
}
참고 URL : https://stackoverflow.com/questions/12714701/deprecated-managedquery-issue
반응형
'Programing' 카테고리의 다른 글
Golang의 글로벌 로깅에 대한 올바른 접근 방식 (0) | 2020.08.17 |
---|---|
Android 용 차트 (0) | 2020.08.16 |
현재 웹 페이지 스크롤 위치를 가져오고 설정하는 방법은 무엇입니까? (0) | 2020.08.16 |
정해진 기간이 지나면 만료되는 Android 평가판 애플리케이션 만들기 (0) | 2020.08.16 |
JSTL과 함께 EL을 사용하여 Enum 값에 액세스 (0) | 2020.08.16 |