Freigeben über


So wird’s gemacht: Fortsetzen von Windows Phone-Apps nach dem Aufrufen einer Dateiauswahl (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Wenn Sie in einer Windows Phone Store-App eine Dateiauswahl aufrufen, wird Ihre App deaktiviert, bis die Dateiauswahl die Auswahl des Benutzers zurückgibt. Auf Smartphones mit wenig Speicher wird Ihre App allerdings womöglich beendet. Aufgrund dieser Möglichkeit müssen Sie in einer Windows Phone Store-App andere Methoden als in einer Windows Store-App aufrufen, um die App nach Abschluss eines Dateiauswahlvorgangs fortzusetzen. Die folgende Tabelle enthält die entsprechenden Methoden.

Aufgabe Aufzurufende Methode in einer Windows Store-App Aufzurufende Methode in einer Windows Phone Store-App
Auswählen einer zu öffnenden Datei PickSingleFileAsync PickSingleFileAndContinue
Auswählen eines Speicherorts und eines Dateinamens für eine Datei PickSaveFileAsync PickSaveFileAndContinue
Auswählen eines Ordners PickSingleFolderAsync PickFolderAndContinue

 

Das Beispiel in diesem Thema veranschaulicht, wie Sie Ihre App bei Verwendung einer FileOpenPicker-Klasse fortsetzen. Andere Methoden für die Datei- oder Ordnerauswahl können mit ähnlichem Code aufgerufen werden.

Tipp  Ein Beispiel für diese Lösung finden Sie unter Beispiel zur Dateiauswahl.

 

Anweisungen

Schritt 1: So können Sie eine FileOpenPicker-Klasse aufrufen und Ihre App fortsetzen

Im folgenden Beispiel wird davon ausgegangen, dass der Benutzer mithilfe von FileOpenPicker ein Foto auswählt.

  1. Rufen Sie die PickSingleFileAndContinue-Methode auf, und wählen Sie ein Foto mithilfe einer Dateiauswahl aus.

        function pickSinglePhoto() {
            // Clean scenario output
            WinJS.log && WinJS.log("", "sample", "status");
    
            // Create the picker object and set options
            var openPicker = new Windows.Storage.Pickers.FileOpenPicker();
            openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;
            openPicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary;
            // Users expect to have a filtered view of their folders depending on the scenario.
            // For example, when choosing a documents folder, restrict the filetypes to documents for your application.
            openPicker.fileTypeFilter.replaceAll([".png", ".jpg", ".jpeg"]);
    
            // Open the picker for the user to pick a file
            openPicker.pickSingleFileAndContinue();
        }
    
  2. Schreiben Sie eine Fortsetzungsmethode, um die gewünschte Aktion mit dem vom Benutzer ausgewählten Foto einzuleiten, wenn die App fortgesetzt wird.

        // Called when app is activated from file open picker
        // eventObject contains the returned files picked by user
        function continueFileOpenPicker(eventObject) {
            var files = eventObject[0].files;
            var filePicked = files.size > 0 ? files[0] : null;
            if (filePicked !== null) {
                // Application now has read/write access to the picked file
                WinJS.log && WinJS.log("Picked photo: " + filePicked.name, "sample", "status");
            } else {
                // The picker was dismissed with no selected file
                WinJS.log && WinJS.log("Operation cancelled.", "sample", "status");
            }
        }
    
  3. Lauschen Sie nach dem activated-Ereignis.

        ...
        app.addEventListener("activated", activated, false);
        app.start();
    
  4. Behandeln Sie nach der Aktivierung der App das activated-Ereignis, um Informationen zur Aktivierung zu sammeln und sie an die Seite weiterzuleiten, die die Dateiauswahl aufgerufen hat.

        function activated(eventObject) {
            var activationKind = eventObject.detail.kind;
            var activatedEventArgs = eventObject.detail.detail;
    
            // Handle launch and continuation activation kinds
            switch (activationKind) {
                case activationKinds.launch:
                case activationKinds.pickFileContinuation:
                case activationKinds.pickSaveFileContinuation:
                case activationKinds.pickFolderContinuation:
                case activationKinds.webAuthenticationBrokerContinuation:
                    var p = WinJS.UI.processAll().
                        then(function () {
    
                            // Navigate to either the first scenario or to the last running scenario
                            // before suspension or termination.
                            var url = "/pages/home/home.html";
                            var initialState = {};
                            var navHistory = app.sessionState.navigationHistory;
                            if (navHistory) {
                                nav.history = navHistory;
                                url = navHistory.current.location;
                                initialState = navHistory.current.state || initialState;
                            }
                            initialState.activationKind = activationKind;
                            initialState.activatedEventArgs = activatedEventArgs;
                            nav.history.current.initialPlaceholder = true;
                            return nav.navigate(url, initialState);
                        });
    
                    ...
                    break;
    
                default:
                    break;
            }
    
  5. Überprüfen Sie die ActivationKind-Eigenschaft, wenn der Benutzer zur Seite navigiert. Wenn ihr Wert pickFileContinuation ist, rufen Sie die Fortsetzungsmethoden auf.

                if (options && options.activationKind === Windows.ApplicationModel.Activation.ActivationKind.pickFileContinuation) {
                    continueFileOpenPicker(options.activatedEventArgs);
    

Verwandte Themen

Beispiel zur Dateiauswahl