Neste primeiro post irei mostrar como abrir arquivos usando o FileOpenPicker no Windows Phone 8.1
Ao abrir o dialogo, para escolher os arquivos, usando o FileOpenPicker, o seu app entra em um modo de suspensão, até que o arquivo seja escolhido. Para isso você deve salvar o Status do seu app para que ele volte no mesmo estado apos o usuário escolher o arquivo.
Para salvar o estado do seu app você deve criar o seguinte método no seu App.xaml.cs
private async void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); await SuspensionManager.SaveAsync(); deferral.Complete(); }
Caso o seu projeto não encontre a classe SuspensionManager você devera criar uma Blank Page no seu projeto para que ele crie a pasta Common, onde se encontra a classe SuspensionManager.
Também no App.xaml.cs você deverá criar um metodo override do OnActivated:
protected override void OnActivated(IActivatedEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; if (rootFrame == null) { rootFrame = new Frame(); Window.Current.Content = rootFrame; } if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //Insira uma tratativa caso o programa finalize } var continuationEventArgs = e as IContinuationActivatedEventArgs; if (continuationEventArgs != null) { var mainPage = rootFrame.Content as MainPage; mainPage.Continue(continuationEventArgs); } Window.Current.Activate(); }
Agora na sua MainPage você deve criar o método Continue, que está sendo chamado no método OnActivated, para recuperar o arquivo que o usuário selecionou.
public async void Continue(IContinuationActivatedEventArgs args) { if (args.Kind == ActivationKind.PickFileContinuation) { var openPickerContinuationArgs = args as FileOpenPickerContinuationEventArgs; // Recuperar a "Action" que está armazenada no ContinuationData, que é gravada na ação que chama o Picker. string action = (string)openPickerContinuationArgs.ContinuationData["Action"]; var files = openPickerContinuationArgs.Files; //Caso o usuario possa selecionar mais de um arquivo, você deverar fazer um foreach com a variavel files if (files.Count > 0) { var file = files.FirstOrDefault(); } else { // TODO: Escreva o codigo para caso o usuario cancele o picker } } }
Agora só criar um botão para chamar o Picker.
private void OpenFile_Click(object sender, RoutedEventArgs e) { var openPicker = new FileOpenPicker(); openPicker.ContinuationData["Action"] = "SendPicture"; openPicker.FileTypeFilter.Add(".jpg"); openPicker.FileTypeFilter.Add(".bmp"); openPicker.PickSingleFileAndContinue(); }
Com isso seu App você já ira conseguir abrir um arquivo salvo no Windows Phone do usuário.
Bom post Rafael.
CurtirCurtir
Muito bom, estava precisando dessa informação e não achava em lugar nenhum. Foi bem claro e objetivo.
CurtirCurtir