Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao abrir navegador - FLAG_ACTIVITY_NEW_TASK flag

Estou na primeira aula, na chamada do browser e ao clicar no visitar site, deu o seguinte erro: Calling startActivity() from outside of an Activity context requires theFLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

Segue meu código:

insira seu código aqui

insira seu código aqui

@Override public void onCreateContextMenu(ContextMenu menu, View v, final ContextMenu.ContextMenuInfo menuInfo) {

    MenuItem itemSite = menu.add("Visitar site");
    Intent intentSite = new Intent(Intent.ACTION_VIEW);
    intentSite.setData(Uri.parse("http://www.google.com"));       
    itemSite.setIntent(intentSite);


    MenuItem deletar = menu.add("Deletar");
    deletar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo;
            Aluno aluno = (Aluno) listaAlunoView.getItemAtPosition(adapterInfo.position);
            AlunoDAO alunoDAO = new AlunoDAO(ListaAlunosActivity.this);
            alunoDAO.excluirAluno(aluno);
            alunoDAO.close();
            Toast.makeText(getApplicationContext(),"Aluno excluído com sucesso.",LENGTH_SHORT).show();
            carregarListaAlunos();
            return false;
        }
    });
}

Pesquisando no google sobre o problema, eu vi que se eu puser a linha intentSite.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Funciona. Eu só gostaria de entender, se foi alguma mudança de versão do android desde a video aula ou se fiz alguma coisa errada.

Obrigada.

1 resposta
solução!

Sempre utilizei a flag FLAG_ACTIVITY_NEW_TASK para abrir o browser atravéz de um link. Mas acredito ser uma peculiaridade de versões do Android mesmo. Segue um texto extraido da documentação:


FLAG_ACTIVITY_NEW_TASK requirement is now enforced

With Android 9, you cannot start an activity from a non-activity context unless you pass the intent flag FLAG_ACTIVITY_NEW_TASK. If you attempt to start an activity without passing this flag, the activity does not start, and the system prints a message to the log.

Note: The flag requirement has always been the intended behavior, and was enforced on versions lower than Android 7.0 (API level 24). A bug in Android 7.0 prevented the flag requirement from being enforced.

( https://developer.android.com/about/versions/pie/android-9.0-changes-all#fant-required )