我想创建一个联系人窗口小部件,显示与联系人的图片和名称的GridView,当按下视图时打开相应联系人的信息,但显示时显示权限拒绝小部件中的图片。权限拒绝在窗口小部件
首先,我刚创建了一个应用程序来测试显示GridViews和查询联系人。我提到了这一点,因为这意味着我必须包含正确的权限(android.permission.READ_CONTACTS)才能使应用程序正常工作。一旦这个工作,我试图创建一个小工具,做同样的事情。一切对工作,除了用于显示有图片的联系人,这并不因为以下异常的工作图片:
07-05 22:43:16.934: E/DatabaseUtils(17897): java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/contacts/165/photo from pid=710, uid=10065 requires android.permission.READ_CONTACTS
相应的应用程序是com.teslacoilsw.launcher(?新星),而不是我的包名,以防万一。但我很困惑:该应用程序读取一切正常,并显示照片。小部件读取联系人的显示名称和查找URI很好,但是在尝试读取图片时会出现这些异常。有什么方法我应该为小部件添加额外的权限?
这里就是我创建了远程视窗,并添加信息
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.contact_widget_row);
contactCursor.moveToPosition(position);
String contactName = contactCursor.getString(
contactCursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME_PRIMARY));
rv.setTextViewText(R.id.text1, contactName);
String uriString = contactCursor.getString(
contactCursor.getColumnIndexOrThrow(ContactsContract.Contacts.PHOTO_URI));
if(uriString != null)
{
rv.setImageViewUri(R.id.image1, Uri.parse(uriString));
}
else
{
rv.setImageViewResource(R.id.image1, R.drawable.ic_contacts_holo_dark);
}
FWIW为空的URI显示就好了图像的代码,但是,这并不需要从联系人显示URI。
我该如何设置在我的小部件中显示联系人照片的权限?