如何在活动外查询联系人内容提供商?

时间:2010-10-08 13:03:36

标签: android android-contentprovider

我正在尝试在“活动”之外查询“联系人”内容提供商。但是,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);
  } 
}

1 个答案:

答案 0 :(得分:8)

改为使用ContentResolver.query()

(调用Context.getContentResolver()获取ContentResolver的实例。无论如何你都需要一个Context,但它不一定是Acitivity)

Activity.managedQuery()负责处理与Cursor相关的Activity生命周期。 ContentResolver.query()不会这样做,因此您必须确保自己关闭并重新查询光标等。