103 votes

Obsolète ManagedQuery() question

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 montrer un problème sur:

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

Parce qu' managedQuery() est obsolète.

Comment pourrais-je réécrire cette méthode sans utiliser managedQuery()?

250voto

Femi Points 42054

Vous pouvez le remplacer avec de l' context.getContentResolver().query et LoaderManager (vous aurez besoin d'utiliser le package de compatibilité pour les dispositifs de soutien avant la version de l'API 11).

Cependant, il semble que vous êtes seulement en utilisant la requête une fois: vous n'avez probablement même pas besoin de ça. Peut-être que cela pourrait fonctionner?

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

3voto

PrvN Points 251
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();
            }
        }
    }

-6voto

Buggy IdioT Points 130

vous devez initialiser le curseur becauese il sera proche méthode avant de commencer ou de certains où d'autre

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X