Android oferece uma ferramenta muito poderosa e ainda fácil de usar chamada de intenções. A intenção pode ser usar para transformar aplicações em bibliotecas de alto nível e tornar o código reutilizar algo ainda melhor do que antes. A tela inicial do Android e AnyCut usam intenções extensivamente para criar atalhos, por exemplo. Embora seja bom ser capaz de fazer uso de uma API de baixo acoplamento, não há nenhuma garantia de que a intenção que você enviar será recebida por outro aplicativo. Isso acontece especialmente com apps do ó partido, como o Panoramio e a sua intenção RADAR.
Enquanto trabalhava em um novo aplicativo, eu vim acima com uma maneira muito simples de descobrir se o sistema contém qualquer aplicativo capaz de responder à intenção que você deseja usar. Implementei essa técnica no meu aplicativo cinza fora o item de menu que o usuário normalmente teria clique para disparar a intenção. O código é bastante simples e fácil de seguir:
/ ** * Indica se a ação especificada pode ser usada como uma intenção. Este * método consulta o Gerenciador de pacotes para pacotes instalados que pode * responder a uma intenção com a ação especificada. Se nenhum pacote apropriado é * encontrado, esse método retorna false. ** @param contexto ambiente do aplicativo. * ação de @param a intenção ação para verificar a disponibilidade. ** @return true se uma intenção com a ação especificada pode ser enviada e * respondeu, false caso contrário. * / isIntentAvailable de booleano estático público (contexto de contexto, a ação de String) {final PackageManager packageManager = context.getPackageManager(); intenção intenção final = novo Intent(action); Lista deAqui está como eu usá-lo:
@Overridepublic boolean onPrepareOptionsMenu (Menu menu) {final boolean scanAvailable = isIntentAvailable (este, "com.google.zxing.client.android.SCAN"); Item de MenuItem; item = menu.findItem(R.id.menu_item_add); item.setEnabled(scanAvailable); Return super.onPrepareOptionsMenu(menu);}Neste exemplo, o menu é esmaecido se o aplicativo de Scanner de código de barras não está instalado. Outra, mais simples, maneira de fazer isso é pegar o ActivityNotFoundException ao chamar startActivity(), mas ele só deixa que você reagir ao problema, você não pode prever e atualizar a interface do usuário de maneira adequada para impedir o usuário de fazer algo que não vai funcionar. A técnica descrita aqui também pode ser usada em tempo de inicialização para perguntar ao usuário se ele gostaria de instalar o pacote faltando, você pode simplesmente redirecioná-lo para o Android Market usando o URI apropriado.
Nota: Este artigo foi originalmente publicado no meu blog pessoal.
View the original article here
This post was made using the Auto Blogging Software from WebMagnates.org This line will not appear when posts are made after activating the software to full version.
Tidak ada komentar:
Posting Komentar