2016-02-26 17 views
21

Sto provando a collegare in profondità la mia app e ho implementato quanto segue nel mio AndroidManifest.xml per aprire l'attività corretta.Deep linking Android con più parametri di query

<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> 

E sto testando l'attività da adb utilizzando

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'attività è segnare con URI che è passato all'attività in l'intento è solo

myCustomScheme://myHost?key=category_parent_id 

sua saltando tutto dopo '&'

Ho cercato qui su SO ma non trova qualsiasi cosa con più parametri di query.

Qualsiasi aiuto sarebbe apprezzato. :)

risposta

48

si prega di aggiungere \ prima & segno durante il test con adb

copia questo

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

+0

Grazie! ha funzionato come un incantesimo! –

+0

Il mio piacere !!!! –

+0

ha funzionato per me. Qualcuno sa perché hai bisogno di fare questo? –

5

Puoi avvolgere il comando di shell con le virgolette semplici (per evitare di modificare il contenuto uri):

adb shell 'am start -d "myCustomScheme://myHost?key=category_parent_id&value=92&title=test"' 
-1

Basta codificare i parametri dell'URL e funzionerà. Potrebbe essere il bug di parsing di Google.

Prima:

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

Dopo:

adb shell am start -W -a android.intent.action.VIEW -d "myCustomScheme://myHost?key%3Dcategory_parent_id%26value%3D92%26title%3Dtest" com.myApp.android 
1

per OSX/utenti Mac con Android Studio

carico adb

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

Verificare che l'applicazione è riconosciuta

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

prova Deeplink

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

Non dimenticare il ''