1. ホーム
  2. java

[解決済み] 非推奨のManagedQuery()問題

2022-05-16 22:12:43

質問

このようなメソッドを持っています。

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 そして LoaderManager を追加しました (API バージョン 11 より前のデバイスをサポートするには、互換性パッケージを使用する必要があります)。

しかし、クエリを1回しか使っていないようなので、おそらくその必要もないでしょう。おそらく、これはうまくいくでしょう。

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