Når en klikket kobling eller programmatisk forespørsel påkaller en WEB-URI-hensikt, Prøver Android-systemet hver av følgende handlinger, i sekvensiell rekkefølge, til forespørselen lykkes:
- Åpne brukerens foretrukne app som kan håndtere URI, hvis en er utpekt.
- Åpne den eneste tilgjengelige appen som kan håndtere URI.
- Tillat brukeren å velge en app fra en dialogboks.
Følg trinnene nedenfor for å opprette og teste koblinger til innholdet. Du kan også bruke App Links Assistant I Android Studio for Å legge Til Android App Linker.
Legg til intensjonsfiltre for innkommende koblinger
hvis du vil opprette en kobling til appinnholdet ditt, legger du til et intensjonsfilter som inneholder disse elementene og attributtverdiene i manifestet:
<action>
Angi intensjonshandlingenACTION_VIEW
slik at intensjonsfilteret kan nås fra Google Søk.<data>
Legg til ett eller flere<data>
– koder, som hver representerer ET URI-format som løser aktiviteten. I det minste må<data>
– koden inneholdeandroid:scheme
– attributtet.
Du kan legge til flere attributter for å finjustere typen URI som aktiviteten godtar. Du kan for eksempel ha flere aktiviteter som godtar lignende Uri-Er, men som bare er forskjellige basert på banenavnet. I dette tilfellet bruker du attributtet android:path
eller variantene pathPattern
eller pathPrefix
for å skille hvilken aktivitet systemet skal åpne for forskjellige uri-baner.
<category>
Inkluderer kategorienBROWSABLE
. Det kreves for at intent-filteret skal være tilgjengelig fra en nettleser. Uten det kan du ikke klikke på en kobling i en nettleser til appen din.
inkluderer også DEFAULT
– kategorien.Dette gjør at appen din kan svare på implisitte hensikter. Uten dette kan aktiviteten startesbare hvis hensikten angir navnet på appkomponenten din.
FØLGENDE XML-kodebit viser hvordan du kan angi et intensjonsfilter i manifestet for dyplenking. Uriene "example://gizmos"
og"http://www.example.com/gizmos"
løser begge til denne aktiviteten.
<activity android:name="com.example.android.GizmosActivity" android:label="@string/title_gizmos" > <intent-filter android:label="@string/filter_view_http_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "http://www.example.com/gizmos" --> <data android:scheme="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> <!-- note that the leading "/" is required for pathPrefix--> </intent-filter> <intent-filter android:label="@string/filter_view_example_gizmos"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos" --> <data android:scheme="example" android:host="gizmos" /> </intent-filter></activity>
Legg Merke til at de to intentfiltrene bare varierer med <data>
– elementet.Selv om det er mulig å inkludere flere <data>
– elementer i samme filter,er det viktig at du oppretter separate filtre når intensjonen din er å erklære uniqueURLs (for eksempel en bestemt kombinasjon av scheme
og host
), fordi flere <data>
– elementer i samme intensjonsfilter faktisk slås sammen for å ta hensyn til alle varianter av deres kombinerte attributter. For eksempel, vurder følgende:
<intent-filter> ... <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="app" android:host="open.my.app" /></intent-filter>
Det kan virke som om dette bare støtter https://www.example.com
ogapp://open.my.app
. Imidlertid støtter den faktisk de to, pluss disse:app://www.example.com
og https://open.my.app
.
Når Du har lagt til intentfiltre med Uri-Er for aktivitetsinnhold i appmanifest, Kan Android rute alle Intent
som har matchende Uri-Er til appen din under kjøring.
hvis Du vil lære mer om å definere intensjonsfiltre, kan Du se La Andre Apper Starte Aktiviteten.
Les data fra innkommende hensikter
når systemet starter aktiviteten din gjennom et intensjonsfilter, kan du bruke data fra Intent
til å bestemme hva du trenger å gjengi. Kall metodene getData()
og getAction()
for å hente dataene andaction knyttet til innkommende Intent
. Du kan ringe disse metodene når som helst i aktivitetens livssyklus, men du bør vanligvis gjøre det under tidlige tilbakekallinger som onCreate()
elleronStart()
.
her er en utdrag som viser hvordan du henter data fra enIntent
:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) val action: String? = intent?.action val data: Uri? = intent?.data}
Java
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData();}
Følg disse anbefalte fremgangsmåtene for å forbedre brukeropplevelsen:
- den dype lenken skal ta brukere direkte til innholdet, uten spørsmål, interstitiale sider eller pålogginger. Pass på at brukerne kanse appinnholdet selv om de aldri tidligere har åpnet programmet.Det er greit å be brukere om påfølgende interaksjoner eller når de åpner appfra Bærerakett.
- Følg utformingsveiledningen som er beskrevet i Navigasjon Med Back og Up, slik at appen din samsvarer med brukernes forventninger til bakovernavigering etter at de har kommet inn i appen din via en dyp kobling.
Test dyplenkene dine
Du kan bruke Android DebugBridge med activity manager-verktøyet (am) til å teste at intent filterURIs du angav for dyplenkning, løser til riktig appaktivitet. Dukan kjøre adb-kommandoen mot en enhet eller en emulator.
den generelle syntaksen for testing av en intensjonsfilter-URI med adb er:
$ adb shell am start -W -a android.intent.action.VIEW -d <URI> <PACKAGE>
for eksempel prøver kommandoen nedenfor å vise en målappaktivitet somer knyttet til den angitte URI.
$ adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android
manifestdeklarasjonen og intentbehandleren du angir ovenfor, definerer forbindelsen mellom appen din og et nettsted og hva du skal gjøre med innkommende koblinger. For å få systemet til å behandle appen din som standardbehandler for Et Sett Med Urier, må du imidlertid også be om at systemet bekrefter denne tilkoblingen. Den neste leksjonen forklarer hvordan du implementerer denne bekreftelsen.