Udostępnij przez


Integrowanie spakowanych aplikacji z udziałem Windows Share

W tym artykule wyjaśniono, jak zintegrować spakowane aplikacje z funkcją udziału Windows . Aplikacje spakowane w formacie MSIX mają tożsamość pakietu i są gotowe do zarejestrowania się jako cel udostępniania. Funkcja Udostępnianie umożliwia użytkownikom udostępnianie zawartości z jednej aplikacji do innej. Aplikacja pakietowa zarejestruje się jako cel udostępniania, aby odbierać i obsługiwać udostępnione pliki w aplikacji.

Co to jest udział docelowy?

Funkcja Docelowy Element Udostępniania została wprowadzona w systemie Windows 8 i umożliwia aplikacji odbieranie danych z innej aplikacji. Udostępnianie elementu docelowego działa jak Schowek, ale z zawartością dynamiczną.

Aby domyślna rejestracja celu udostępniania działała z aplikacjami Win32, aplikacja musi mieć tożsamość pakietu, a także obsługiwać argumenty udostępniania jako ShareTargetActivatedEventArgs, które są aktywnym obiektem pochodzącym z aplikacji źródłowej. Nie jest to zawartość pamięci statycznej, która jest wysyłana do aplikacji docelowej.

Uwaga / Notatka

W aplikacji języka C++ użyj interfejsu API GetCurrentPackageFullName , aby sprawdzić, czy uruchomiona aplikacja ma tożsamość pakietu. Interfejs API zwraca kod błędu APPMODEL_ERROR_NO_PACKAGE, jeśli nie działa z identyfikatorem pakietu.

Wymagania wstępne

Aby obsługiwać ShareTargetActivatedEventArgs, aplikacja musi obsługiwać system Windows 10, wersję 2004 (kompilacja 10.0.19041.0) lub nowszą. Jest to minimalna wersja docelowa funkcji.

Zarejestruj się jako cel udostępniania

Aby zaimplementować kontrakt udostępniania w aplikacji, wymagane są dwa kroki.

Dodaj rozszerzenie celu udostępniania do pliku appxmanifest

W Eksploratorze rozwiązań programu Visual Studio otwórz plik package.appxmanifest projektu Pakowanie w swoim rozwiązaniu i dodaj rozszerzenie docelowe udostępniania.

<Extensions>
      <uap:Extension
          Category="windows.shareTarget">
        <uap:ShareTarget>
          <uap:SupportedFileTypes>
            <uap:SupportsAnyFileType />
          </uap:SupportedFileTypes>
          <uap:DataFormat>Bitmap</uap:DataFormat>
        </uap:ShareTarget>
      </uap:Extension>
</Extensions>

Dodaj obsługiwany przez aplikację format danych do konfiguracji DataFormat. W tym przypadku aplikacja obsługuje udostępnianie obrazów, więc DataFormat jest ustawione na Bitmap.

Pobieranie argumentów zdarzeń udostępniania

Począwszy od systemu Windows 10, wersja 1809, spakowane aplikacje mogą wywoływać metodę AppInstance.GetActivatedEventArgs w celu pobrania niektórych rodzajów informacji o aktywacji aplikacji podczas uruchamiania. Możesz na przykład wywołać tę metodę, aby uzyskać informacje o aktywacji aplikacji, czy była ona wyzwolona przez otwarcie pliku, kliknięcie interaktywnego wyskakującego powiadomienia lub użycie zarejestrowanego protokołu.

Jednak informacje o aktywacji ShareTargetActivatedEventArgs są obsługiwane tylko w systemie Windows 10 w wersji 2004 i nowszych. Dlatego aplikacja powinna być skierowana do urządzeń z tą konkretną minimalną wersją.

Aby zobaczyć implementację Windows App SDK, zobacz metodę OnLaunched w aplikacji przykładowej Share Target.

W przypadku innych spakowanych aplikacji w metodzie aplikacji Main sprawdź AppInstance.GetActivatedEventArgs.

public static void Main(string[] cmdArgs)
{
    ...
    if (isRunningWithIdentity())
    {
        var activationArgs = AppInstance.GetActivatedEventArgs();
        if (activationArgs != null)
        {
            switch (activationArgs.Kind)
            {
                case ActivationKind.Launch:
                    HandleLaunch(activationArgs as LaunchActivatedEventArgs);
                    break;
                case ActivationKind.ToastNotification:
                    HandleToastNotification(activationArgs as ToastNotificationActivatedEventArgs);                                     
                    break;
                case ActivationKind.ShareTarget:
                    HandleShareAsync(activationArgs as ShareTargetActivatedEventArgs);
                    break;
                default:
                    HandleLaunch(null);
                    break;
            }
        }
    }
}

Aby uzyskać pełną implementację, zobacz aplikację demonstracyjną ze sklepu Photo Store .

Obsługa udostępnionych plików

Poniższy fragment kodu pokazuje, jak obsługiwać pliki udostępnione w spakowanej aplikacji. Fragment kodu jest częścią metody HandleShareAsync, która jest wywoływana, gdy aplikacja jest aktywowana jako docelowy punkt udostępniania w poprzednim przykładzie.

static async void HandleShareAsync(ShareTargetActivatedEventArgs args)
{
    ShareOperation shareOperation = args.ShareOperation;
    shareOperation.ReportStarted();

    if (shareOperation.Data.Contains( 
        Windows.ApplicationModel.DataTransfer.StandardDataFormats.StorageItems))
    {
        try
        {
            IReadOnlyList<IStorageItem> items = await shareOperation.Data.GetStorageItemsAsync();
            var file = (IStorageFile)items[0]; 
            string path = file.Path;
            var image = new ImageFile(path);
            image.AddToCache();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
    shareOperation.ReportCompleted();

    // app launch code
}

Zobacz także