Ich habe ein Widget, das das Bild einiger meiner Kontakte anzeigt, und ich möchte die QuickContact-Karte anzeigen, wenn der Benutzer auf eines der Bilder klickt. Ich weiß, dass ich die Methode ContactsContract.QuickContact.showQuickContact() verwenden sollte, aber es erfordert eine Ansicht oder ein Rect als einen der Eingabeparameter. Mein Problem ist, dass Widgets nur RemoteViews haben, also bin ich mir nicht sicher, was ich als View oder Rect Parameter übergeben soll. Irgendwelche Ideen würden geschätzt werden.So zeigen Sie die QuickContact-Karte vom Widget an
Antwort
Sie das Abzeichen in der XML-Referenz kann
Ich habe dies in der XML-Datei:
<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"
/>
und diesem Code:
private QuickContactBadge mPhotoView;
mPhotoView = (QuickContactBadge) findViewById(R.id.photo);
mPhotoView.assignContactUri(objItem.getUri());
mPhotoView.setMode(QuickContact.MODE_MEDIUM);
und das ist die Berufung Modus (aber der klick auf das badge wird dieses popup bearbeiten, dieser aufruf popup die wähler wird gemacht, indem man auf etwas anderes klickt)
QuickContact.showQuickContact(viewContactQuick.this, mPhotoView,objItem.getLookupUri() , QuickContact.MODE_MEDIUM, null);
Aber was passiert, wenn Sie mehr als ein QuickContactBadge auf dem Widget (Home-App) haben.Ihr "privates QuickContactBadge mPhotoView" verbindet sich nicht mit dem XML-Code. Woher wissen Sie also, welches QuickContactBadge zur privaten Anweisung gehört? Danke – alejom99
Entschuldigung, es gibt eine fehlende Zeile 'mPhotoView = (QuickContactBadge) findViewById (R.id.photo);' – Pentium10
Ist Ihr Code oben in einer Aktivität definiert? Der Grund warum ich frage ist, weil findViewById() nicht im AppWidgetProvider definiert ist. Wenn dies der Fall ist, definieren Sie dann eine Absicht, um diese Aktivität zu öffnen (wenn die Benutzer auf den QuickContactBade tippen) und dann die QuickContact-Karte anzuzeigen? – alejom99
Ich habe auch danach gesucht. Vielleicht ist die Quelle der Kontakte-App hilfreich. Ich versuche zu graben: link text
Ich habe mit dieser seit einiger Zeit auch jetzt gekämpft. Beim Betrachten des Android-Quellcodes scheint Google eine transparente Aktivität mit dem Namen QuickContactActivity erstellt und das QuickContactWindow (die Klasse, mit der das Popup erstellt wird) darin platziert. Ich habe das gleiche versucht und die transparente Aktivität funktioniert, aber ich habe Probleme, das Abzeichen zu bekommen. Ich kenne Qberticus QuickActions-Code und ich habe es ausprobiert, aber ich würde lieber nur die schnellen Kontakte verwenden, die Google geschrieben hat, weil seine Funktionalität und sein Aussehen ziemlich herausfordernd sind.
Ich habe auch ActivityNotFoundException bekommen, wenn ich versuche, die QuickContact.showQuickContact() -Methode auf Eclair zu verwenden - es funktioniert jedoch gut auf Froyo.
Hier ist meine Frage. Es wäre wirklich fantastisch, wenn wir zusammenarbeiten, könnte dieses Problem gelöst zu bekommen: link
Um die Quickcontact UI über ein Widget zu zeigen, können Sie einen Rückruf PendingIntent machen die Technik hier dargestellt mit:
http://advback.com/android/working-with-app-widgets-android/
in Ihrem Widget onUpdate(), erstellen Sie die Absicht und es mit dem 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);
Wenn die Ansicht geklickt wird, erhalten Sie eine OnReceive() Benachrichtigung in Ihrem Widget erhalten. Verwenden Sie Intent.getSourceBounds(), um das rect abzurufen, und zeigen Sie den QuickContact an:
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);
}
- 1. So zeigen Sie die Paketlizenzdatei an?
- 2. So zeigen Sie die Fehlermeldung an
- 3. So zeigen Sie Credits an
- 4. So zeigen Sie Snort-Protokolldateien an
- 5. So zeigen Sie Warnmeldungen in Django an
- 6. So zeigen Sie formatierte XML an
- 7. So zeigen Sie WooCommerce an Kundenauftragskommentare
- 8. Knockout-Validierung - So zeigen Sie Fehlermeldungen an
- 9. So zeigen Sie Elemente im Listenfeld an
- 10. So zeigen Sie Zellen gemeinsam an
- 11. So zeigen Sie Sonderzeichen in HTML an
- 12. So zeigen Sie Tabellendaten als Benutzerbewertungen an
- 13. So zeigen Sie Informationen an, die sich vom DB-Wert unterscheiden
- 14. So zeigen Sie Listenergebnisse an - searchView
- 15. So zeigen Sie Listenelemente in Listview an?
- 16. So zeigen Sie Benachrichtigungen in IOS an
- 17. So zeigen Sie Daten in jtree an
- 18. Android: So löschen Sie den Aktivitätsstapel vom Widget
- 19. So zeigen Sie die Wertesumme im gestapelten Balkendiagramm an
- 20. So zeigen Sie die Projektstruktur im Projektwerkzeugfenster an
- 21. So zeigen Sie die Druckerauswahl in NativeScript unter iOS an
- 22. So zeigen Sie die Untersumme in jeder Unterteilung an
- 23. So zeigen Sie die Summe der Spalten an Grid.Mvc Liste
- 24. So zeigen Sie die Einstellungen in einer Ansicht an
- 25. So zeigen Sie die Bildlaufleiste immer an UICollectionView
- 26. So zeigen Sie die freigegebene Runner-Warteschlange an
- 27. So zeigen Sie den überprüften Wert für die Optionsfeldsammlung an
- 28. So zeigen Sie die Bildlaufleiste in UITableView an
- 29. So zeigen Sie die Ergebnisse eines WebLogic-Implementierungsplans an
- 30. So zeigen Sie Daten an, die in Android
Haben Sie tatsächlich die akzeptierte Antwort erhalten, um in einem Widget zu arbeiten? Ich sehe nicht, wie Sie ein QuickContactBadge zu einem Widget hinzufügen können. Sogar auf Android 2.2.1 bekomme ich W/AppWidgetHostView (20284): Fehler beim Aufblasen von AppWidget AppWidgetProviderInfo (provider = ComponentInfo {com.mypackage.xyz/c om.com.mypackage.xyz.FeedsWidget}): android.view .InflateException: Binär-XML-Datei Zeile # 131: Fehler beim Aufblasen der Klasse androi d.widget.QuickContactBadge --- da es keine unterstützte Komponente ist. –