我想創建一個聯繫人窗口小部件,顯示與聯繫人的圖片和名稱的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。
我該如何設置在我的小部件中顯示聯繫人照片的權限?