hozzon létre mély linkeket az alkalmazás tartalmához

amikor egy kattintott linkre vagy programozott kérésre webes URI-szándékot hív meg, az Android rendszer a következő műveletek mindegyikével próbálkozik, sorrendben, amíg a kérés sikeres nem lesz:

  1. nyissa meg a felhasználó által preferált alkalmazást, amely képes kezelni az URI-t, ha van ilyen.
  2. nyissa meg az egyetlen elérhető alkalmazást, amely képes kezelni az URI-t.
  3. lehetővé teszi a felhasználó számára, hogy kiválasszon egy alkalmazást egy párbeszédablakból.

kövesse az alábbi lépéseket a tartalmára mutató linkek létrehozásához és teszteléséhez. Az Android Studio Alkalmazáshivatkozások asszisztensét is használhatja az Android Alkalmazáshivatkozások hozzáadásához.

szándékszűrők hozzáadása bejövő hivatkozásokhoz

az alkalmazás tartalmára mutató hivatkozás létrehozásához adjon hozzá egy szándékszűrőt, amely az alábbi elemeket és attribútumértékeket tartalmazza a jegyzékben:

<action>adja meg aACTION_VIEWszándék műveletet, hogy a szándékszűrő elérhető legyen a Google Keresésből.<data>adjon hozzá egy vagy több<data>címkét, amelyek mindegyike egy URI formátumot képvisel, amely feloldja a tevékenységet. Legalább a<data>címkének tartalmaznia kell aandroid:schemeattribútumot.

további attribútumokat adhat hozzá, hogy tovább finomítsa a tevékenység által elfogadott URI típusát. Előfordulhat például, hogy több olyan tevékenysége is van, amelyek hasonló Uri-kat fogadnak el, de amelyek egyszerűen az elérési út neve alapján különböznek egymástól. Ebben az esetben használja a android:path attribútumot vagy annak pathPattern vagy pathPrefix változatait annak megkülönböztetésére, hogy a rendszernek melyik tevékenységet kell megnyitnia a különböző URI-útvonalakhoz.

<category>tartalmazza aBROWSABLEkategóriát. Erre azért van szükség, hogy a szándékszűrő webböngészőből elérhető legyen. Enélkül a böngészőben egy linkre kattintva nem oldható meg az alkalmazás.

tartalmazza a DEFAULT kategóriát is.Ez lehetővé teszi az alkalmazás számára, hogy válaszoljon az implicit szándékokra. E nélkül a tevékenység elindíthatócsak akkor, ha a szándék meghatározza az alkalmazás összetevőjének nevét.

a következő XML-részlet bemutatja, hogyan adhat meg szándékszűrőt a jegyzékben a mélyhivatkozáshoz. A "example://gizmos" és a"http://www.example.com/gizmos" URI-k egyaránt megoldják ezt a tevékenységet.

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

vegye figyelembe, hogy a két szándékszűrő csak a <data> elem szerint különbözik egymástól.Bár lehetséges, hogy több <data> elemet is tartalmazzon ugyanabban a szűrőben,fontos, hogy külön szűrőket hozzon létre, amikor egyedieurl-eket kíván deklarálni (például a scheme és a host specifikus kombinációját), mert az ugyanazon szándékszűrő több <data> elemét ténylegesen egyesítik, hogy figyelembe vegyék az együttes attribútumok összes változatát. Vegyük például a következőket:

<intent-filter> ... <data android:scheme="https" android:host="www.example.com" /> <data android:scheme="app" android:host="open.my.app" /></intent-filter>

úgy tűnhet, mintha ez csak a https://www.example.com és aapp://open.my.app – et támogatná. Azonban valójában támogatja ezt a kettőt, plusz ezeket:app://www.example.com és https://open.my.app.

Miután hozzáadta a szándékszűrőket az URI-kkal a tevékenység tartalmához az appmanifest-hez, az Android képes bármilyen Intent – et átirányítani az alkalmazáshoz futásidőben.

További információ a szándékszűrők meghatározásáról: engedélyezze más alkalmazások számára a tevékenység elindítását.

bejövő szándékok adatainak olvasása

amint a rendszer elindítja a tevékenységet egy szándékszűrőn keresztül, a Intent által megadott adatok segítségével meghatározhatja, hogy mit kell megjelenítenie. Hívja a getData() ésgetAction() módszereket a bejövő Intentadatokhoz és műveletekhez. Ezeket a módszereket a tevékenység életciklusa során bármikor hívhatja, de általában a korai visszahívások során, például onCreate() vagyonStart().

itt van egy részlet, amely megmutatja, hogyan lehet adatokat letölteni egyIntent:

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();}

kövesse ezeket a bevált gyakorlatokat a felhasználói élmény javítása érdekében:

  • a mély linknek közvetlenül a tartalomhoz kell vezetnie a felhasználókat,bármilyen felszólítás, közbeiktatott oldal vagy bejelentkezés nélkül. Győződjön meg arról, hogy a felhasználók képeseklásd az alkalmazás tartalmát akkor is, ha korábban soha nem nyitották meg az alkalmazást.Rendben van, ha felszólítja a felhasználókat a későbbi interakciókra, vagy amikor megnyitják az alkalmazástAz indítóból.
  • kövesse a Navigation with Back and Up című részben leírt tervezési útmutatót, hogy az alkalmazás megfeleljen a felhasználók visszafelé navigációval kapcsolatos elvárásainak, miután egy mély hivatkozáson keresztül beléptek az alkalmazásba.

tesztelje a mélyhivatkozásokat

használhatja az Android DebugBridge programot az activity manager (am) eszközzel annak tesztelésére, hogy a mélyhivatkozáshoz megadott szándékszűrő a megfelelő alkalmazástevékenységhez kapcsolódik-e. Futtathatja az adb parancsot egy eszköz vagy emulátor ellen.

az Általános szintaxis tesztelésére szándék szűrő URI adb:

$ adb shell am start -W -a android.intent.action.VIEW -d <URI> <PACKAGE>

például az alábbi parancs megpróbálja megtekinteni a célalkalmazási tevékenységet, amelya megadott URI-hoz kapcsolódik.

$ adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android

a fent beállított manifest deklaráció és szándékkezelő meghatározza az alkalmazás és a webhely közötti kapcsolatot, valamint azt, hogy mi a teendő a bejövő linkekkel. Annak érdekében azonban, hogy a rendszer az alkalmazást kezelje alapértelmezett kezelőként egy URI-készlethez, azt is kérnie kell, hogy a rendszer ellenőrizze ezt a kapcsolatot. A következő lecke elmagyarázza, hogyan kell végrehajtani ezt az ellenőrzést.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

Previous post Ki az A Toni Kukoc? A Chicago Bulls korábbi játékosa és Michael Jordan Utolsó táncának sztárja
Next post Croup & Asthma-ReMed Natural Medicine Clinic