2010-09-22 7 views
0

Je cherche un moyen de savoir quels navigateurs sont installés sur le Smartphone Android et leurs noms de paquets.Découvrez quels navigateurs sont installés?

Pourquoi en ai-je besoin? Eh bien fondamentalement, mon App réagit sur certaines URL, c'est-à-dire http://bit.ly, donc quand le clic sera tel qu'il aura le choix dans quelle application l'ouvrir. Jusqu'à présent, tout fonctionne comme prévu.

Si l'utilisateur configure cette application par défaut pour ce type de liens, il s'ouvrira toujours dans celui-ci sans demander davantage à l'utilisateur. Jusqu'ici tout va bien. Mais en faisant cela, il sera complètement incapable d'ouvrir ces liens dans son navigateur.

J'ai donc besoin d'un moyen d'envoyer cette intention directement au navigateur, mais pour ce faire, je dois savoir quelle application a été définie par défaut pour le schéma http/https (comme l'utilisateur peut le changer si est plus de 1 navigateur installé).

Envoi du avec l'intention

intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity")); 

should't un problème je pense. Le problème est, je ne peux pas envoyer une intention standard pour les URLs, parce que mon application l'attraperait à nouveau si définie par défaut par l'utilisateur.

+1

Pourquoi essayez-vous de configurer l'envoi vers un navigateur par défaut? Il suffit d'envoyer le lien comme une intention et de laisser le téléphone décider quel navigateur est défini par défaut. – Falmarri

+0

Parce que si je l'envoie comme intention normale, mon application l'attraperait à nouveau (si elle est définie par défaut). Dans ce cas, ce n'est pas le résultat souhaité. Disons que vous avez une application qui attrape http://www.flickr.com/photos/ urls et ils s'ouvrent dans votre application. Mais maintenant vous voulez donner à l'utilisateur une chance de l'ouvrir dans un navigateur aussi. Si vous envoyez une intention normale, votre application l'ouvrira de nouveau. Vous devez donc l'envoyer à un navigateur spécifique afin que votre application ne l'attrape plus. – Tseng

Répondre

1

should't être un problème, je pense que

Hardwiring dans le paquet et les classes de code qui ne vous appartient pas est-toujours un problème.

donc je besoin d'un moyen d'envoyer cette intention directement dans le navigateur, mais pour le faire, je dois savoir à quelle application l'utilisateur a mis en être par défaut pour le schéma http/https par exemple (comme utilisateur peut changer si plus de 1 navigateur est installé).

Utilisez PackageManager et queryIntentActivityOptions() pour filtrer votre activité et obtenir une liste d'autres activités que l'utilisateur peut choisir.

+0

Merci, c'était un bon indice dans la bonne direction. – Tseng

Questions connexes