web-dev-qa-db-fra.com

Android comment créer un schéma d'URL personnalisé avec le format donné myapp: // http: //

J'ai effectué des recherches sur la plupart des questions et réponses concernant le schéma d'URL personnalisé et je n'ai pas trouvé de réponse. 

Je veux que mon application soit lancée en cliquant sur une certaine URL dans le navigateur (n'importe laquelle sur l'appareil mobile), le fait est que mon URL donnée ne peut pas être modifiée car elle sert également l'application IOS et ressemble à ceci: 

"myapp: // http://www.name.com/path/path2/

Je ne sais pas comment gérer "myapp: // http: //" et construire un filtre d'intention approprié, et tout ce que j'ai essayé ne fonctionne pas. Toute aide sera appréciée, et si j’ai manqué une réponse pertinente, je vous prie de ne pas m'excuser. 

C'est ce que j'ai essayé jusqu'à présent:

      <activity
        Android:name="com.myapp.test.SplashScreen"
        Android:exported="true"
        Android:label="@string/app_name"
        Android:screenOrientation="portrait"
        Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>

        <!-- Test for URL scheme -->
        <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:Host="www.name.com"
                Android:path="/path/path2/"
                Android:scheme="http" />
            <data
                Android:Host="www.name.com"
                Android:path="/path/path2/"
                Android:scheme="https" />

            <data Android:scheme="myapp" />
        </intent-filter>
        <!-- End Test for URL scheme -->
    </activity>

Note: j'ai essayé avec/sans l'export: true

16
EviatarS

Comme CommonsWare a déclaré que l'URI donné sur lequel j'avais besoin de créer un schéma n'est pas un URI valide, le schéma ne fonctionnait pas et l'application ne se lançait pas. Après cette explication, les utilisateurs du serveur ont été convaincus de modifier l’URI en myapp: // ... et cela a fonctionné comme par magie :). 

L'activité ressemble à ceci maintenant: 

 <activity
    Android:name="com.myapp.test.SplashScreen"
    Android:exported="true"
    Android:label="@string/app_name"
    Android:screenOrientation="portrait"
    Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen" >
    <intent-filter>
        <action Android:name="Android.intent.action.MAIN" />

        <category Android:name="Android.intent.category.LAUNCHER" />
    </intent-filter>

    <!-- Test for URL scheme -->
    <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="myapp" />
    </intent-filter>
    <!-- End Test for URL scheme -->
</activity>
12
EviatarS

C'est une mauvaise utilisation du schéma d'URI et n'est pas valide. L'URL HTTP que vous voulez transmettre est une donnée et doit donc être envoyé dans la chaîne de requête.

myapp://somehost/action?url=http%3A%2F%2Fwww.name.com%2Fpath%2Fpath2%2F
1
Monstieur