Uygulama İçeriğine Derin Bağlantılar Oluşturma

Tıklanan bir bağlantı veya programatik istek bir web URI amacını çağırdığında, Android sistemi istek başarılı olana kadar aşağıdaki işlemlerin her birini sıralı olarak dener:

  1. Kullanıcının URI'yı işleyebilecek tercih ettiği uygulamayı (varsa) açın.
  2. URI'yı işleyebilen kullanılabilir tek uygulamayı açın.
  3. Kullanıcının iletişim kutusundan uygulama seçmesine izin ver.

İçeriğinize bağlantılar oluşturmak ve test etmek için aşağıdaki adımları uygulayın. Ayrıca şunu da kullanabilirsiniz: Eklemek için Android Studio'da Uygulama Bağlantıları Asistanı Android App Links.

Not: Android 12'den (API düzeyi 31) itibaren, web intent, yalnızca uygulamanız onaylandığı takdirde uygulamanızdaki bir etkinliği söz konusu web amacında yer alan belirli alan adı. Uygulamanız web intent, kullanıcının varsayılan tarayıcı uygulamasına çözümlenir .

Gelen bağlantılar için intent filtreleri ekleyin

Uygulama içeriğinize bağlantı oluşturmak için uygulamanızın içeriğine yönlendiren bir intent filtresi manifestinizde şu öğeleri ve özellik değerlerini içerir:

<action>
ACTION_VIEW intent işlemini şu şekilde belirtin: amaç filtresine Google Arama üzerinden ulaşılabiliyor.
<data>
Bir veya daha fazla <data> ekle etiketlerinin her biri, etkinliğe çözümlenen URI biçimini temsil eder. En azından, <data> etiketinde şunlar bulunmalıdır: android:scheme özelliğini gönderin.

Etkinliğin kabul ettiği URI türünü daha da hassaslaştırmak için daha fazla özellik ekleyebilirsiniz. Örneğin, Örneğin, benzer URI'leri kabul eden, ancak bunlar basitçe birbirinden farklı olan birden fazla etkinliğiniz olabilir seçebilirsiniz. Bu durumda, android:path özelliği ayırt etmek için yalnızca pathPattern veya pathPrefix varyantları etkinliği olması gerekir.

<category>
BROWSABLE ekleyin seçin. Amaç filtresinin web'den erişilebilir olması için gereklidir emin olun. Bu olmadan, tarayıcıda bir bağlantının tıklanması uygulamanızı yönlendiremez.

DEFAULT kategorisini de dahil edin. Bu, uygulamanızın örtülü niyetlere yanıt vermesine olanak tanır. Bu olmadan etkinlik başlatılabilir. yalnızca intent, uygulamanızın bileşeninin adını belirtiyorsa.

Aşağıdaki XML snippet'i, bir intent filtresini nasıl belirtebileceğinizi gösterir. derin bağlantı için manifest dosyanıza bakın. URI'lar “example://gizmos” ve “http://www.example.com/gizmos” ikisi de bu etkinliği çözer.

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

İki intent filtresinin yalnızca <data> öğesine göre farklılık gösterdiğine dikkat edin. Aynı filtreye birden çok <data> öğesi eklemek mümkün olsa da, benzersiz bir URL'yi beyan etmek istediğinizde ayrı filtreler oluşturmanız (örneğin, scheme ve host öğelerinin belirli bir kombinasyonu) aynı intent filtresindeki birden çok <data> öğesi aslında birleştirilir tüm varyantları hesaba katmak için kullanır. Örneğin, aşağıdakileri göz önünde bulundurun:

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

Bu uzantı yalnızca https://www.example.com ve app://open.my.app. Ancak aslında bu ikisini ve aşağıdakileri destekler: app://www.example.com ve https://open.my.app.

Dikkat: Birden fazla etkinlik, aynı sonuca çözümlenen intent filtreleri içeriyorsa App Link'i doğruladıysanız hangi etkinliğin ve bağlantıyı işler.

Uygulamanıza etkinlik içeriği için URI'ler içeren intent filtreleri ekledikten sonra Android, her Intent manifest dosyasını yönlendirebilir olan,

Amaç filtrelerini tanımlama hakkında daha fazla bilgi edinmek için Diğer Uygulamaların Etkinliğinizi Başlatmasına İzin Verin.

Gelen amaçlardan veri okuma

Sistem, intent filtresi aracılığıyla etkinliğinizi başlattıktan sonra Neleri oluşturmanız gerektiğini belirlemek için Intent tarafından sağlanan verileri kullanın. Telefonla arama getData() ve Verileri almak için getAction() yöntem ve gelen Intent ile ilişkili işlem. Şunları yapabilirsiniz: bu yöntemleri etkinliğin yaşam döngüsü boyunca istediğiniz zaman çağırabilirsiniz, onCreate() veya onStart().

Aşağıda, Intent:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

    val action: String? = intent?.action
    val data: Uri? = intent?.data
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Intent intent = getIntent();
    String action = intent.getAction();
    Uri data = intent.getData();
}

Kullanıcı deneyimini iyileştirmek için aşağıdaki en iyi uygulamaları izleyin:

  • Derin bağlantı, kullanıcıları doğrudan içeriğe götürmelidir. herhangi bir istem, ara sayfa veya giriş olmadan. Kullanıcıların Uygulamayı daha önce hiç açmamış olsalar bile uygulama içeriğini görebilirler. Sonraki etkileşimlerinde veya uygulamayı açtıklarında kullanıcılara istem gönderebilirsiniz .
  • Şu bölümde açıklanan tasarım yönergelerini uygulayın: Yedekle ve Yukarı Kaydırma Özelliğiyle Navigasyon Böylece, uygulamanız kullanıcıların sonraki adımlarda geriye dönük gezinme Uygulamanıza bir derin bağlantı üzerinden giriyorlar.

Derin bağlantılarınızı test etme

Android Hata Ayıklama aracını Amaç filtresinin doğrulanıp ayarlanmadığını test etmek için etkinlik yöneticisi (am) aracıyla bağlantı kurun Derin bağlantı için belirttiğiniz URI'lar doğru uygulama etkinliğine çözümlenir. Siz adb komutunu bir cihaza veya emülatöre karşı çalıştırabilir.

Adb ile intent filtresi URI'sini test etmek için kullanılan genel söz dizimi şöyledir:

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

Örneğin, aşağıdaki komut, uygulamanızın belirtilen URI ile ilişkilidir.

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

Yukarıda ayarladığınız manifest beyanı ve intent işleyici, uygulamanız arasındaki bağlantıyı tanımlar. ve gelen bağlantılarla ne yapılacağını ele alacağız. Ancak, sistemin uygulamanızı bir dizi URI'nın varsayılan işleyicisi olarak değerlendirmesi için önce sistemin bu bağlantıyı doğrulamasını da isteyin. Sonraki derste bu doğrulamayı uygulayabilirsiniz.

Amaçlar ve uygulama bağlantıları hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: