Comment permettre à votre application Windows Phone de continuer à s’exécuter après l’appel d’un sélecteur de fichiers (HTML)
[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]
Quand vous appelez un sélecteur de fichiers à partir d’une application du Windows Phone Store, celle-ci est désactivée tant que le sélecteur n’a pas retourné la sélection faite par l’utilisateur. Sur les téléphones dont la batterie est faible, en revanche, votre application risque de se fermer. Ainsi, vous devez appeler d’autres méthodes dans une application du Windows Phone Store que celles que vous appelez dans une application du Windows Store pour que votre application continue à s’exécuter après une opération avec le sélecteur de fichiers. Le tableau suivant indique ces méthodes.
Tâche | Méthode à appeler depuis une application du Windows Store | Méthode à appeler depuis une application du Windows Phone Store |
---|---|---|
Sélectionner un fichier à ouvrir | PickSingleFileAsync | PickSingleFileAndContinue |
Sélectionner un emplacement et un nom de fichier pour enregistrer un fichier | PickSaveFileAsync | PickSaveFileAndContinue |
Sélectionner un dossier | PickSingleFolderAsync | PickFolderAndContinue |
L’exemple donné dans cette rubrique illustre comment continuer votre application quand vous utilisez une classe FileOpenPicker. Utilisez un code similaire quand vous appelez une autre méthode de sélecteur de fichiers et dossiers.
Astuce Pour voir un exemple de cette solution, consultez l’exemple de sélecteur de fichiers.
Instructions
Étape 1: Pour appeler un FileOpenPicker et continuer votre application
L’exemple suivant suppose que l’utilisateur sélectionne une photo à l’aide d’une classe FileOpenPicker.
Appelez la méthode PickSingleFileAndContinue pour sélectionner une photo à l’aide d’un sélecteur de fichiers.
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(); }
Écrivez une méthode de continuation qui définit l’action à effectuer avec la photo sélectionnée par l’utilisateur quand l’application poursuit son exécution.
// 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"); } }
Écoutez l’événement activated.
... app.addEventListener("activated", activated, false); app.start();
Quand l’application est activée, gérez l’événement activated pour capturer les informations sur l’activation et les transmettre à la page qui a appelé le sélecteur de fichiers.
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; }
Quand l’utilisateur accède à la page, vérifiez la propriété ActivationKind. Si sa valeur est pickFileContinuation, appelez la méthode de continuation.
if (options && options.activationKind === Windows.ApplicationModel.Activation.ActivationKind.pickFileContinuation) { continueFileOpenPicker(options.activatedEventArgs);