从Android小部件查询内容
我正在创建一个包含一些联系信息的Android小部件 我发现getContentResolver()方法只存在于Activity类中,而不存在于AppWidgetProvider类中 如何从小部件查询内容 像这样: Cursor people=getContentResolver().query(一些查询) 更新:从Android小部件查询内容,android,android-widget,Android,Android Widget,我正在创建一个包含一些联系信息的Android小部件 我发现getContentResolver()方法只存在于Activity类中,而不存在于AppWidgetProvider类中 如何从小部件查询内容 像这样: Cursor people=getContentResolver().query(一些查询) 更新: @凌驾 公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId) { 字符串people
@凌驾
公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId)
{
字符串people=getContacts(上下文);
//和别人做点什么。。。
}
私有字符串getContacts(上下文)
{
字符串peopleStr=“”;
字符串[]投影=新字符串[]{ContactsContract.Contacts.\u ID,ContactsContract.Contacts.DISPLAY\u NAME};
字符串排序器=Contacts contract.Contacts.DISPLAY_NAME+“整理本地化ASC”;
字符串选择=Contacts contract.Contacts.IN_VISIBLE_GROUP+“=”+(“1”)+”;
Cursor people=context.getContentResolver().query(Contacts contract.Contacts.CONTENT_URI、投影、选择、null、排序器);
while(people.moveToNext())
{
int nameFieldColumnIndex=people.getColumnIndex(ContactsContract.Data.DISPLAY\u NAME);
peopleStr+=people.getString(nameFieldColumnIndex)+“\n”;
}
人;
回归人民;
}
getContentResolver()实际上是在类中定义的。这意味着,可以通过在appwidgetprovider.onupdate()和那些相关方法中传递的上下文调用它 程序/小部件在我尝试将其插入主屏幕后崩溃。我在原来的帖子中添加了一个例子。没关系。我忘了在AndroidManifest.xml中添加READ_CONTACTS-permission
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
String people = getContacts(context);
// Do something with people...
}
private String getContacts(Context context)
{
String peopleStr = "";
String[] projection = new String[] { ContactsContract.Contacts._ID,ContactsContract.Contacts.DISPLAY_NAME };
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '" + ("1") + "'";
Cursor people = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, projection, selection, null, sortOrder);
while(people.moveToNext())
{
int nameFieldColumnIndex = people.getColumnIndex(ContactsContract.Data.DISPLAY_NAME);
peopleStr += people.getString(nameFieldColumnIndex) + "\n";
}
people.close();
return peopleStr;
}