ale*_*m99 5 android contacts android-widget
我有一个小部件,显示我的一些联系人的图片,我想在用户点击其中一张图片时显示QuickContact卡.我知道我应该使用方法ContactsContract.QuickContact.showQuickContact(),但它需要一个View或一个Rect作为输入参数之一.我的问题是Widgets只有RemoteViews,所以我不确定要传递什么作为View或Rect参数.任何想法,将不胜感激.
要在窗口小部件上显示QuickContact UI,您可以使用此处说明的技术进行回调PendingIntent:
http://advback.com/android/working-with-app-widgets-android/
在您的小部件onUpdate()中,创建intent并将其与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);
Run Code Online (Sandbox Code Playgroud)
单击视图后,您将在窗口小部件中收到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);
}
Run Code Online (Sandbox Code Playgroud)
您可以在 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"
/>
Run Code Online (Sandbox Code Playgroud)
和这段代码:
private QuickContactBadge mPhotoView;
mPhotoView = (QuickContactBadge) findViewById(R.id.photo);
mPhotoView.assignContactUri(objItem.getUri());
mPhotoView.setMode(QuickContact.MODE_MEDIUM);
Run Code Online (Sandbox Code Playgroud)
这是调用模式(但是单击徽章正在处理此弹出窗口,此调用也是弹出窗口,选择器是通过单击其他内容进行的)
QuickContact.showQuickContact(viewContactQuick.this, mPhotoView,objItem.getLookupUri() , QuickContact.MODE_MEDIUM, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4091 次 |
| 最近记录: |