Compartilhar via


Como continuar seu aplicativo do Windows Phone após chamar um seletor de arquivos (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Ao chamar um seletor de arquivos de um aplicativo da Loja do Windows Phone, seu aplicativo é desativado até o seletor retornar a seleção feita pelo usuário. No entanto, nos telefones com pouca memória, o aplicativo pode ser terminado. Por causa dessa possibilidade, você precisa chamar métodos diferentes em um aplicativo da Loja do Windows Phone daquele que você chama em um aplicativo da Windows Store para continuar o aplicativo depois de uma operação do seletor de arquivos. A tabela a seguir mostra esses métodos.

Tarefa Método para chamar de um aplicativo da Windows Store Método para chamar de um aplicativo da Loja do Windows Phone
Selecionar um arquivo para abrir PickSingleFileAsync PickSingleFileAndContinue
Selecionar um local e nome de arquivo para salvar um arquivo PickSaveFileAsync PickSaveFileAndContinue
Selecionar uma pasta PickSingleFolderAsync PickFolderAndContinue

 

O exemplo neste tópico demonstra como continuar o aplicativo quando você usa um FileOpenPicker. Use código semelhante ao chamar outros métodos de seletor de arquivos e pastas.

Dica  Para ver um exemplo dessa solução, consulte o Exemplo de seletor de arquivos.

 

Instruções

Etapa 1: Chamar um FileOpenPicker e continuar o aplicativo

O exemplo a seguir supõe que o usuário esteja selecionando uma nova foto usando um FileOpenPicker.

  1. Chame o método PickSingleFileAndContinue para selecionar uma foto usando um seletor de arquivos.

        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. Grave um método de continuação para obter a ação desejada com a foto selecionada pelo usuário quando o aplicativo continuar.

        // 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. Escute o evento activated .

        ...
        app.addEventListener("activated", activated, false);
        app.start();
    
  4. Quando o aplicativo estiver ativado, manipule o evento activated para capturar informações sobre a ativação e encaminhe-o para a página que chamou o seletor de arquivos.

        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. Quando o usuário navegar para a página, verifique a propriedade ActivationKind. Se esse valor for pickFileContinuation, chame o método de continuação.

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

Tópicos relacionados

Amostra de seletor de arquivos