web-dev-qa-db-fra.com

Android Deep Linking avec plusieurs paramètres de requête

J'essaie de lier en profondeur mon application et j'ai mis en œuvre les éléments suivants dans mon AndroidManifest.xml pour ouvrir l'activité appropriée.

<activity
    Android:name=".ui.activities.MyActivity"
    Android:label="@string/title_activity"
    Android:screenOrientation="portrait">
    <!-- ATTENTION: This intent was auto-generated. Follow instructions at
    https://g.co/AppIndexing/AndroidStudio to publish your Android app deep links. -->
    <intent-filter>
        <action Android:name="Android.intent.action.VIEW" />

        <category Android:name="Android.intent.category.DEFAULT" />
        <category Android:name="Android.intent.category.BROWSABLE" />
        <!-- ATTENTION: This data URL was auto-generated. We recommend that you use the HTTP scheme.
        TODO: Change the Host or pathPrefix as necessary. -->
        <data
            Android:Host="myHost"
            Android:scheme="myCustomScheme" />
    </intent-filter>
</activity>

Et je teste l'activité d'AdB en utilisant

adb Shell am start -W -a Android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test" com.myApp.Android

L'activité est en cours d'ouverture mais l'URI qui est transmis à l'activité dans l'intention est uniquement

myCustomScheme://myHost?key=category_parent_id

Son saute tout après "&"

J'ai cherché ici sur SO mais je n'ai rien trouvé avec plusieurs paramètres de requête.

39
Varun Ramani

Ajoutez simplement \ avant & signe lors du test avec adb.

Copiez ceci:

adb Shell am start -W -a Android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id\&value=92\&title=test" com.myApp.Android

94
Khizar Hayat

Vous pouvez encapsuler la commande Shell avec des guillemets simples (pour éviter de modifier le contenu de l'URI):

adb Shell 'am start -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test"'
15
Simon Marquis

Pour les utilisateurs d'osx/mac avec Android studio

Charger adb

export PATH="/Users/your_user/Library/Android/sdk/platform-tools":$PATH

Vérifiez que l'application est reconnue

adb Shell am start -n com.package/.activities_package_name.MainActivity

Test de lien profond

adb Shell 'am start -W -a Android.intent.action.VIEW -d "myCustomScheme://myHost?key=category_parent_id\&value=92\&title=test" com.myApp.Android'

N'oubliez pas le ''

1
Tomás Mehdi