4
respostas

'Forms.Context' is obsolete: 'Context is obsolete as of version 2.5. Please use a local context instead'

Na aula 04 do Curso Xamarin Parte 4 é realizada a implementação do método TirarFoto.

Ao criar a variável "activity" a partir de "Forms.Context" está sendo apresentada a mensagem do título deste tópico.

O projeto compila e executa normalmente.

Pergunto como corrigir usando um contexto local, conforme a própria mensagem instrui.

        public void TirarFoto()
        {
            Intent intent = new Intent(MediaStore.ActionImageCapture);

            arquivoImagem = PegarArquivoImagem();

            intent.PutExtra(MediaStore.ExtraOutput, Android.Net.Uri.FromFile(arquivoImagem));

            var activity = Forms.Context as Activity;

            activity.StartActivityForResult(intent, 0);
        }
4 respostas

Olá, Nilson

Felizmente o programa roda normalmente para você, apesar da mensagem de warning.

Encontrei em alguns fóruns a dica para evitar essa mensagem de warning. Em vez de:

var activity = Forms.Context as Activity;

Substituia por:

var activity = Android.App.Application.Context as Activity;

Mas cuidado: como não testei esse código, não garanto 100% que vá funcionar. Caso não funcione, volte o código original, por favor.

Não funcionou!

Fazendo o debug, a propriedade Context existe (não é nula) em Android.App.Application.

Porém, quando é atribuído para a variável activity, a variável fica nula. Sendo assim não executa o método StartActivityForResult.

            var activity = Android.App.Application.Context as Activity;

            activity?.StartActivityForResult(intent, 0);

Uma forma de resolver isso é usar o Plugin que o Mongemagno criou: https://github.com/jamesmontemagno/CurrentActivityPlugin

Use CrossCurrentActivity.Current.Activity como seu contexto

Obrigado @angelobelchior

Assim que possível vou estudar esse plugin.

Estou finalizando um outro projeto pessoal.

Farei breve.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software