J'ai cette méthode:
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);
}
Malheureusement, le compilateur me montre un problème sur:
Cursor cursor = managedQuery(contentUri, proj, null, null, null);
Parce que managedQuery()
est obsolète.
Comment pourrais-je réécrire cette méthode sans utiliser managedQuery()
?
Vous pouvez le remplacer par context.getContentResolver().query
et LoaderManager
(vous devrez utiliser le package de compatibilité pour prendre en charge les périphériques antérieurs à la version 11 de l'API).
Cependant, il semble que vous n'utilisiez la requête qu'une seule fois: vous n'en avez probablement même pas besoin. Peut-être que cela fonctionnerait?
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();
}
}
}