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

jav*_*ser 1 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);
  } 
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*nvv 8

请改用ContentResolver.query().

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

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