12
votes

Comment écouter un URI personnalisé

Je travaille sur une application qui a son propre préfixe URI. (DCHUB: // Dans ce cas)

Recherche beaucoup et lire beaucoup, mais j'ai un peu confus.

est-il possible de démarrer mon application lorsque quelqu'un clique sur un lien commençant par DCHUB: // dans le navigateur?

jusqu'à présent trouvé beaucoup d'exemples l'inverse autour de l'ouverture du navigateur de votre application mais ce n'est pas ce que je cherche.

Mettre à jour

Merci beaucoup, j'ai pensé que, maintenant je suis un peu coincé dans la partie suivante. xxx

i Vous avez un nullpointexception S Si je démarre l'application Normalement, cela fonctionne bien si j'ouvre de la page Web. Donc, j'ai pensé que desservent certaines vérifications de NullValue, mais cela ne le résolvez pas. Toute suggestion comment je peux démarrer l'application juste en le sélectionnant?


2 commentaires

Stackoverflow.com/questions/3469908/... vient de trouver cette réponse, va essayer si cela fonctionne.


Bonne question, mais veuillez poser des questions supplémentaires comme des questions distinctes, pas comme une mise à jour de votre question originale ...


3 Réponses :


26
votes

Pour enregistrer un protocole dans votre application Android, ajoutez un bloc supplémentaire à l'androidmanifest.xml.

<manifest>
 <application>
   <activity>
           <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="dchub"/>
            </intent-filter>
   </activity>
 </application>
</manifest>


2 commentaires

Merci beaucoup, j'ai pensé que, maintenant je suis un peu coincé dans la partie suivante. [Code] Data URI = getintent (). getdata (); Si (data.equals (null)) {} else {String Scheme = data.getscheme (); String Host = Data.Gethost (); int port = data.geport (); } [/ CODE] J'ai obtenu certaines nullpointerExceptions si je démarre l'application normalement, cela fonctionne bien si j'ouvre de la page Web. Donc, j'ai pensé que desservent certaines vérifications de NullValue, mais cela ne le résolvez pas. Toute suggestion comment je peux commencer l'application juste en le sélectionnant? // désolé pour la mauvaise mise en forme, le manuel ne l'aide pas à dire que quatre espaces, ont-ils été resvusé aucun changement: s


Si les données sont NULL "Data.equals (NULL)" provoquera une exception NullPoinger ... Vérifiez si (DATA == NULL)



-1
votes

Essayez ce code:

try {
    Uri data = getIntent().getData();
    if (data.equals(null)) { 
    } else { 
        String scheme = data.getScheme();
        String host = data.getHost();
        int port = data.getPort(); 
        //type what u want
        tv.setText("any thing");
     }      
} catch (NullPointerException e) {
      // TODO: handle exception
  tv.setText("Null");
}


0 commentaires

10
votes

n'utilisez pas de données.equals (null). Cela est lié à l'échec, vous ne pouvez pas appeler des méthodes sur un objet NULL, d'où la NPE.

Pourquoi le bloc de code EMTPY? Dans mon esprit, c'est beaucoup plus jolie: xxx


0 commentaires