Qual é o propósito de usar android.intent.category.DEFAULT
no campo Categoria dos Filtros de Intenção?
Qual é o propósito de usar android.intent.category.DEFAULT
no campo Categoria dos Filtros de Intenção?
Respostas:
As categorias são usadas para intents implícitos. Portanto, se sua atividade pode ser iniciada por um intent implícito quando nenhuma outra categoria específica é atribuída à atividade, o filtro de intent da atividade deve incluir esta categoria. (mesmo se você tiver outras categorias no filtro Intent). Se você tiver certeza de que sua atividade deve ser chamada com qualquer outra categoria, não use o Padrão.
Definir a categoria como padrão não significa que esta atividade será usada por padrão quando seu aplicativo for iniciado. A Activity apenas diz ao sistema que " Oh, eu poderia ser iniciado, mesmo se a categoria do Intent inicial estiver definida como Nada ! "
Esta categoria é usada principalmente para intenções implícitas. Se sua atividade deseja ser iniciada por uma intenção implícita, deve incluir este catetor em seu filtro.
Acho que o termo "padrão" deve ser entendido como " candidato padrão ". Se a ação em uma parte dos dados for resolvida em várias atividades, o Android apresentará todos os candidatos ao usuário e o usuário poderá selecionar seu padrão preferido.
Referência:
http://developer.android.com/guide/components/intents-filters.html
Extraia dessa página:
O Android trata todos os intents implícitos passados para tostartActivity () como se eles contivessem pelo menos uma categoria: "android.intent.category.DEFAULT" (a constante CATEGORY_DEFAULT). Portanto, as atividades que desejam receber intents implícitos devem incluir "android.intent.category.DEFAULT" em seus filtros de intent. (Filtros com as configurações "android.intent.action.MAIN" e "android.intent.category.LAUNCHER" são a exceção. Eles marcam atividades que iniciam novas tarefas e que são representadas na tela do iniciador. Eles podem incluir "android.intent .category.DEFAULT "na lista de categorias, mas não é necessário.)
Na verdade, é para garantir que suas outras atividades possam ser chamadas quando o aplicativo estiver em execução. LAUNCHER fará com que a atividade que o contém seja a primeira atividade a ser iniciada. Para usar as intenções para chegar às outras atividades, elas devem ser listadas como atividades "reais" colocando DEFAULT. Isso é pelo que eu sei, então não me cite se estiver errado.
As atividades precisarão oferecer suporte a CATEGORY_DEFAULT para que possam ser encontradas por Context.startActivity ().
Para receber intents implícitos, você deve incluir a categoria CATEGORY_DEFAULT no filtro de intent. Os métodos startActivity () e startActivityForResult () tratam todas as intents como se declarassem a categoria CATEGORY_DEFAULT. Se não o declararmos em nosso filtro de intent, nenhuma intent implícita resolverá nossa atividade.
É usado para declarar alguma operação como ação padrão (como seu nome sugere). Vamos considerar que temos um aplicativo de bloco de notas (referindo-se ao exemplo de bloco de notas do Android). A primeira página do aplicativo consiste em uma lista de todos os arquivos do bloco de notas. Quando um arquivo de bloco de notas é selecionado, uma das operações como editar nota, excluir nota, etc. pode ser realizada. Mas eu quero fazer a edição como minha ação padrão, o que significa que quando eu pressiono o botão central do meu teclado, a janela de edição deve ser aberta.
https://developer.android.com/guide/components/intents-filters
Para receber intents implícitos, você deve incluir a categoria CATEGORY_DEFAULT no filtro de intent. Os métodos startActivity () e startActivityForResult () tratam todas as intents como se declarassem a categoria CATEGORY_DEFAULT. Se você não declarar essa categoria em seu filtro de intent, nenhuma intent implícita será resolvida para sua atividade.
categoria:
android.intent.category.DEFAULT
Corresponde a qualquer Intent implícito. Esta categoria deve ser incluída para que sua Atividade receba qualquer Intent implícito.