1

アクティビティの外部で連絡先コンテンツ プロバイダーにクエリを実行しようとしています。しかし、managedQuery は Activity のメソッドです。managedQuery の代わりに使用できる他のクラス/メソッドはありますか?

これが私のコードです:

class MyActivity extends Activity {

  private Cursor getContacts() {
 Uri uri = ContactsContract.Contacts.CONTENT_URI;
 String[] projection = new String[] { ContactsContract.Contacts._ID,
   ContactsContract.Contacts.DISPLAY_NAME,
   ContactsContract.Contacts.HAS_PHONE_NUMBER };
 String where = null;
 String[] whereArgs = null;
 String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
   + " COLLATE LOCALIZED ASC";

 return context.managedQuery(uri, projection, where, whereArgs, sortOrder);
  } 
}
4

1 に答える 1

8

代わりにContentResolver.query()を使用してください。

Context.getContentResolver()を呼び出してContentResolverのインスタンスを取得します。とにかくContextが必要ですが、Acitivityである必要はありません)

Activity.managedQuery()は、カーソルに関するアクティビティのライフサイクルを処理します。ContentResolver.query()はそれを行わないので、カーソルを閉じて再クエリするなどしてください。

于 2010-10-08T13:51:55.627 に答える