Freigeben von „Meine Kontakte”
Wichtig
Meine Kontakte wird in Windows 11 und Windows 10 Versionen mit KB5034203 nicht mehr unterstützt.
Mit der Funktion „Meine Kontakte“ können die Benutzer Kontakte an ihre Taskleiste anheften, so dass sie von jedem Ort in Windows aus in Kontakt bleiben können, unabhängig davon, mit welcher Anwendung sie verbunden sind. Jetzt können Benutzer Inhalte für ihre angehefteten Kontakte freigeben, indem sie Dateien aus dem Datei-Explorer auf ihre Kontakte-Pin ziehen. Sie können auch alle Kontakte im Windows-Kontaktspeicher über den Standardfreigabe-Charme freigeben. Lesen Sie weiter, um zu erfahren, wie Sie Ihre Anwendung als Freigabeziel für Meine Kontakte aktivieren.
Anforderungen
- Windows 10 und Microsoft Visual Studio 2019. Einzelheiten zur Installation finden Sie unter Einrichten mit Visual Studio.
- Grundkenntnisse in C# oder einer ähnlichen objektorientierten Programmiersprache. Erste Schritte mit C# finden Sie unter Erstellen einer „Hello, world“-App.
Übersicht
Es gibt drei Schritte, die Sie ausführen müssen, um Ihre Anwendung als Ziel für die gemeinsame Nutzung von Meine Kontakte zu aktivieren:
- Deklarieren Sie die Unterstützung für den shareTarget-Aktivierungsvertrag in Ihrem Anwendungsmanifest.
- Vermerken Sie die Kontakte, die die Nutzer über Ihre App mit anderen teilen können.
- Unterstützung mehrerer Instanzen der Anwendung, die gleichzeitig laufen. Die Nutzer müssen in der Lage sein, mit einer Vollversion Ihrer Anwendung zu interagieren und sie gleichzeitig für die gemeinsame Nutzung mit anderen zu verwenden. Sie können es in mehreren Freigabefenstern gleichzeitig verwenden. Um dies zu unterstützen, muss Ihre Anwendung in der Lage sein, mehrere Ansichten gleichzeitig auszuführen. Wie das geht, erfahren Sie in dem Artikel „Mehrere Ansichten für eine App anzeigen“.
Wenn Sie dies getan haben, erscheint Ihre Anwendung als Freigabeziel im Freigabefenster von Meine Kontakte, das auf zwei Arten gestartet werden kann:
- Ein Kontakt wird über den Share Charm ausgewählt.
- Die Datei(en) werden per Drag & Drop auf einen an die Taskleiste angehefteten Kontakt gezogen.
Erklärung zur Unterstützung des Aktienvertrags
Um die Unterstützung für Ihre Anwendung als Freigabeziel zu deklarieren, öffnen Sie zunächst Ihre Anwendung in Visual Studio. Klicken Sie im Solution Explorer mit der rechten Maustaste auf Package.appxmanifest und wählen Sie Öffnen mit. Wählen Sie im Menü XML (Text) Editor und klicken Sie auf OK. Nehmen Sie dann die folgenden Änderungen am Manifest vor:
Vorher
<Applications>
<Application Id="MyApp"
Executable="$targetnametoken$.exe"
EntryPoint="My.App">
</Application>
</Applications>
After
<Applications>
<Application Id="MyApp"
Executable="$targetnametoken$.exe"
EntryPoint="My.App">
<Extensions>
<uap:Extension Category="windows.shareTarget">
<uap:ShareTarget Description="Share with MyApp">
<uap:SupportedFileTypes>
<uap:SupportsAnyFileType/>
</uap:SupportedFileTypes>
<uap:DataFormat>Text</uap:DataFormat>
<uap:DataFormat>Bitmap</uap:DataFormat>
<uap:DataFormat>Html</uap:DataFormat>
<uap:DataFormat>StorageItems</uap:DataFormat>
<uap:DataFormat>URI</uap:DataFormat>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
</Application>
</Applications>
Dieser Code fügt Unterstützung für alle Dateien und Datenformate hinzu, aber Sie können festlegen, welche Dateitypen und Datenformate unterstützt werden (weitere Informationen finden Sie in der Dokumentation der Klasse ShareTarget).
Kontakte mit Anmerkungen versehen
Damit das Fenster „Meine Kontakte“ Ihre Anwendung als Freigabeziel für Ihre Kontakte anzeigen kann, müssen Sie diese in den Windows-Kontaktspeicher schreiben. Um zu lernen, wie man Kontakte schreibt, sehen Sie sich das Kontaktkarten-Integrations-Beispiel an.
Damit Ihre Anwendung bei der Freigabe an einen Kontakt als Freigabeziel für „Meine Kontakte“ angezeigt wird, muss sie eine Anmerkung zu diesem Kontakt schreiben. Anmerkungen sind Datenteile aus Ihrer Anwendung, die mit einem Kontakt verbunden sind. Die Annotation muss die aktivierbare Klasse, die der gewünschten Ansicht entspricht, in ihrem ProviderProperties-Mitglied enthalten und die Unterstützung für die Share-Operation deklarieren.
Sie können Kontakte zu jedem beliebigen Zeitpunkt während der Ausführung Ihrer Anwendung mit Anmerkungen versehen, aber im Allgemeinen sollten Sie Kontakte mit Anmerkungen versehen, sobald sie dem Windows-Kontaktspeicher hinzugefügt werden.
if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
{
// Create a new contact annotation
ContactAnnotation annotation = new ContactAnnotation();
annotation.ContactId = myContact.Id;
// Add appId and Share support to the annotation
String appId = "MyApp_vqvv5s4y3scbg!App";
annotation.ProviderProperties.Add("ContactShareAppID", appId);
annotation.SupportedOperations = ContactAnnotationOperations::Share;
// Save annotation to contact annotation list
// Windows.ApplicationModel.Contacts.ContactAnnotationList
await contactAnnotationList.TrySaveAnnotationAsync(annotation);
}
Die „appId“ ist der Name der Paketfamilie, gefolgt von „!“ und der ID der aktivierbaren Klasse. Um den Paketfamiliennamen zu finden, öffnen Sie Package.appxmanifest mit dem Standardeditor und suchen Sie auf der Registerkarte „Verpackung“. Hier ist „App“ die aktivierbare Klasse, die der Ansicht „Share Target“ entspricht.
Laufen als Meine Kontakte-Aktienziel
Um die Anwendung auszuführen, überschreiben Sie schließlich die Methode OnShareTargetActivated in der Hauptklasse Ihrer Anwendung, um die Aktivierung des Freigabeziels zu behandeln. Die Eigenschaft ShareTargetActivatedEventArgs.ShareOperation.Contacts enthält die Kontakte, für die die Freigabe erfolgt, oder ist leer, wenn es sich um eine Standardfreigabe handelt (nicht um eine Meine Kontakte-Freigabe).
protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
bool isPeopleShare = false;
if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
{
// Make sure the current OS version includes the My People feature before
// accessing the ShareOperation.Contacts property
isPeopleShare = (args.ShareOperation.Contacts.Count > 0);
}
if (isPeopleShare)
{
// Show share UI for MyPeople contact(s)
}
else
{
// Show standard share UI for unpinned contacts
}
}