Android Tarayıcıları Nasıl Yönetir: Provider ve Services
Browser Provider, kurulu tarayıcıların kayıt defterini tutan sistemsel bir ContentProvider'dır; Browser Services ise tarayıcıyı başlatan, URL'yi ileten ve hızlı önizlemeyi (Custom Tabs / Trusted Web Activities) destekleyen hizmet katmanıdır. Birlikte, varsayılan tarayıcı seçiminden, bağlantıların önizlenmesine ve uygulamalar arasında URL'lerin güvenli aktarımına kadar her şeyden sorumludurlar.
Bu Nedir ve Nasıl Çalışır
Browser Provider, sistemin web bağlantılarını işleyebilen uygulamaları kaydettiği sistemsel bir veritabanıdır (kayıt defteri). Bir bağlantıya tıklandığında sistem, uygun intent-alıcılarını bulmak ve varsayılan kuralları (varsayılan tarayıcı) uygulamak için bu sağlayıcıya başvurur.
Browser Services, tarayıcıyı fiilen başlatan, URL'yi ileten ve oturumu yöneten hizmetler/API setidir. Custom Tabs (uygulama içinde yerleşik önizleme) ve PWA'lar için Trusted Web Activities (TWA) tam olarak bunlar aracılığıyla uygulanır. Services, Intent filtreleriyle (ACTION_VIEW) etkileşime girer ve uygulamaların ön bağlama ve önceden yükleme sayesinde tarayıcı başlatma hızını artırmasına olanak tanır.
Temel Avantajlar
- Kullanıcı: Bağlantıların seçilen tarayıcıda otomatik olarak açılması, uygulamanın tamamen değişmeden önizleme yapılması.
- Performans: Custom Tabs üzerinden "sıcak başlatma", yükleme gecikmesini azaltır.
- Güvenlik: Sistem, hangi uygulamaların bağlantı alabileceğini kontrol eder ve tarayıcı oturumlarını izole eder.
Geliştiriciyseniz, bağlantıları hızlıca açmak için AndroidX Custom Tabs (CustomTabsIntent) kullanın; bu, tarayıcı uygulamasının tam olarak açılmasına kıyasla başlatma süresinde belirgin bir azalma sağlar.
Nasıl Yapılandırılır ve Kullanılır (Pratik)
- Varsayılan tarayıcı seçimi: Ayarlar → Uygulamalar → Varsayılan uygulamalar → Tarayıcı. İstediğiniz uygulamayı seçin.
- Belirli bir tarayıcıda bağlantıların açıldığını kontrol etme: Tarayıcı uygulamasının ayarlarını açın → "Bağlantıları açma" veya "Bağlantı işleyicisi" ve izinleri etkinleştirin/kontrol edin.
- Tercihleri sıfırlama: Ayarlar → Uygulamalar → Uygulama tercihlerini sıfırla — eğer bağlantılar yanlış açılıyorsa.
- Geliştiriciler için: Önceden hazırlık yapmak amacıyla tarayıcı hizmetine bağlanarak (bindService) CustomTabsIntent kullanın.
Yedek almadan sistem sağlayıcılarını ve hizmetlerini silmeyin veya değiştirmeyin: bu, tüm uygulamalarda bağlantı açma mekanizmasının bozulmasına yol açabilir. Sistem verilerine erişim genellikle root veya ADB yetkileri gerektirir.
Tarayıcı Yığını Bileşenlerinin Karşılaştırılması
| Bileşen | Ne Yapar | Hangi Android Sürümünden İtibaren |
|---|---|---|
| Browser Provider | Kurulu tarayıcıların kayıt defteri, intent için aday seçimi | Android 4.0+ |
| Browser Services | Tarayıcı başlatma, URL iletme, Custom Tabs, TWA | Android 5.0+ / Sonraki evrim |
Sık Karşılaşılan Hatalar ve Çözüm Yolları
- Bağlantılar hiç açılmıyor: Tarayıcının sistemde devre dışı bırakılmadığını kontrol edin; uygulama tercihlerini sıfırlayın.
- Bağlantılar yanlış tarayıcıda açılıyor: "Varsayılan tarayıcı" ayarlarını ve tarayıcının kendi içindeki bağlantı açma izinlerini kontrol edin.
- Custom Tabs görünmüyor: Custom Tabs desteğine sahip bir tarayıcı uygulamasının kurulu olduğundan emin olun; test sırasında bindService ve CustomTabsIntent içindeki doğru paketi kontrol edin.
- Tarayıcı güncellemesinden sonraki çakışmalar: Sorunlu tarayıcının önbelleğini ve verilerini temizleyin veya tercihleri geçici olarak sıfırlayın.
SSS
- Tarayıcıyı manuel olarak kaydetmek gerekir mi? Hayır — sistem, kurulu uygulamaları kurulum/güncelleme sırasında otomatik olarak kaydeder.
- Custom Tabs herhangi bir tarayıcıda kullanılabilir mi? Hayır — tarayıcının Custom Tabs API'sini desteklemesi gerekir.
- Trusted Web Activity nedir? Bu, tarayıcı kabuğu olmadan PWA'yı açmanın, tam ekran görüntülemenin ve özel bir güven sözleşmesi aracılığıyla uygulamayla entegrasyonun bir yoludur.
- Browser Provider verileri üçüncü taraf uygulamalara açık mı? Çoğu kayıt ve işlem sistem izinleriyle korunur; normal uygulamalar doğrudan iç veritabanlarıyla değil, Intents aracılığıyla etkileşime girer.
Gerekirse, geliştirici için CustomTabsIntent kod örneği içeren kısa bir kılavuz ekleyebilir veya teşhis için ADB komutlarını listeleyebilirim.