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.
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(); }
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"); } }
Escute o evento activated .
... app.addEventListener("activated", activated, false); app.start();
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; }
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);