FileOpenPicker Windows Phone 8.1

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.

2 comentários sobre “FileOpenPicker Windows Phone 8.1

Deixe um comentário