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:
- Kullanıcının URI'yı işleyebilecek tercih ettiği uygulamayı (varsa) açın.
- URI'yı işleyebilen kullanılabilir tek uygulamayı açın.
- 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ızcapathPattern
veyapathPrefix
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:
- Amaçlar ve Amaç Filtreleri
- Diğer Uygulamaların Etkinliğinizi Başlatmasına İzin Verin
- Android Studio ile Android App Links'i ekleme