我有一个小部件,它显示我的一些联系人的图片,当用户点击其中一张图片时,我想显示QuickContact卡。我知道我应该使用ContactsContract.QuickContact.showQuickContact(),方法,但它需要一个视图或Rect作为输入参数之一。我的问题是小部件只有RemoteViews,所以我不确定要传递什么作为View或Rect参数。任何想法都将不胜感激。
发布于 2010-08-09 03:46:18
您可以在XML中引用该徽章
我在XML文件中有以下内容:
<QuickContactBadge
android:id="@+id/photo"
android:layout_width="54dip"
android:layout_height="57dip"
android:layout_marginLeft="5dip"
android:background="@drawable/quickcontact_photo_frame"
style="?android:attr/quickContactBadgeStyleWindowSmall"
/>这段代码是:
private QuickContactBadge mPhotoView;
mPhotoView = (QuickContactBadge) findViewById(R.id.photo);
mPhotoView.assignContactUri(objItem.getUri());
mPhotoView.setMode(QuickContact.MODE_MEDIUM);这是呼叫模式(但是点击徽章是处理这个弹出窗口,这个呼叫也是弹出的,选择器是通过点击其他东西来实现的)
QuickContact.showQuickContact(viewContactQuick.this, mPhotoView,objItem.getLookupUri() , QuickContact.MODE_MEDIUM, null);发布于 2011-02-05 07:20:37
要在小部件上显示QuickContact UI,您可以使用如下所示的技术创建一个回调PendingIntent:
http://advback.com/android/working-with-app-widgets-android/
在您的小部件onUpdate()中,创建意图并将其与RemoteView相关联:
intent = new Intent(context, MyWidget.class);
intent.setAction(ACTION_WIDGET_RECEIVER);
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
intent.setData(uri);
pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.my_widget_view, pendingIntent);当单击视图时,您将在小部件中收到一个onReceive()通知。使用Intent.getSourceBounds()检索rect,并显示QuickContact:
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
Uri uri = intent.getData();
if ( uri != null ) {
QuickContact.showQuickContact(context, intent.getSourceBounds(), uri, ContactsContract.QuickContact.MODE_SMALL, null);
}
}
super.onReceive(context, intent);
} 发布于 2010-09-21 17:38:01
我也一直在找这个。也许联系人应用程序的源代码会有所帮助。我正在尝试挖掘:link text
https://stackoverflow.com/questions/3435239
复制相似问题