1

我正在尝试在 Activity 之外查询联系人内容提供者。但是 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() 负责处理与 Cursor 相关的 Activity 生命周期。ContentResolver.query() 不会这样做,因此您必须确保自己关闭并重新查询游标等。

于 2010-10-08T13:51:55.627 回答