2013-01-23 59 views
-1

我正在尝试使用RemoteViews.setImageViewUri()在主屏幕小部件上显示联系人图片,但没有显示任何内容。如何在小工具Android 4+中显示联系人照片?

我登录画面URI,这是正确的,就像content://com.android.contacts/contacts/293/photo

这里是我的getViewAt方法:

// Create and populate the View to display at the given index. 
    public RemoteViews getViewAt(int index) { 

     // Create a view to display at the required index. 
     RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.item_layout); 

     // Populate the view with contact name. 
     rv.setTextViewText(R.id.name, items.get(index).getString("first_name")); 


     //check if we have a photo set 
     if (items.get(index).getString("photo_url") != null) { 

      Log.i("parsed uri", String.valueOf(Uri.parse(items.get(index).getString("photo_url")))); 

      rv.setImageViewUri(R.id.photo_url, Uri.parse(items.get(index).getString("photo_url"))); 
     } 

     // Create an item-specific fill-in Intent that will populate 
     // the Pending Intent template created in the App Widget Provider (GridWidgetProvider). 
     Intent fillInIntent = new Intent(); 
     fillInIntent.putExtra(Intent.EXTRA_TEXT, items.get(index)); 
     rv.setOnClickFillInIntent(R.id.name, fillInIntent); 
     return rv; 
} 

它显示的联系人姓名罚款,但没有图片...

任何想法为什么?由于

编辑:XML为ImageView的:

<ImageView 
    android:id="@+id/photo_url" 
    android:layout_width="match_parent" 
    android:layout_height="125dp" 
    android:layout_above="@id/name" 
    android:gravity="center" 
    android:background="#FFFF0000" 
/> 

回答

0

想通了呆着,这里是代码:

//check if we have a photo set 
     if (items.get(index).getString("photo_url") != null) { 

      rv.setImageViewUri(R.id.photo_url, Uri.parse(items.get(index).getString("photo_url"))); 
     } 

     Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, items.get(index).getLong("contact_id")); 
     InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), contactUri); 

     if (input != null) { 

      Log.i("input", String.valueOf(input)); 

      image = BitmapFactory.decodeStream(input); 

     } else { 
      image = BitmapFactory.decodeResource(context.getResources(), R.drawable.default_dark); 
     } 

     rv.setImageViewBitmap(R.id.photo_url, image); 
相关问题