Uygulama kalitesini iyileştirme ve kullanıcı gizliliğini koruma kapsamında uygulamalarınızda izin kullanımını en aza indirmenizi öneririz. Bu, kullanıcıların güvenli bir kullanıcı ortamı sağlayan yüksek kaliteli uygulamaları keşfetmesine ve kullanmasına yardımcı olur.
Kullanıcılardan izin istemek, kullanıcı akışını kesintiye uğratır ve kullanıcılar isteğinizi reddedebilir. Ayrıca, her yeni izin beyan ettiğinizde uygulamanızın kullanıcı verilerini nasıl isteyip paylaştığını incelemeniz gerekir. Bazı özellikle hassas izinler ve API'ler, veri erişimi, toplama, kullanma ve paylaşma sürecinizle ilgili uygulama içi açıklama sağlamanızı gerektirir.
İzin kullanımını en aza indirmenin birden fazla alternatif yolu vardır:
- Uygulamanız için sadece yaklaşık konum gerekiyorsa kesin konum bilgileri yerine genel konum bilgileri sağlayan izinler beyan edin.
- Uygulamanızın, izinleri bildirmeden istenen işlevi gerçekleştirmesini sağlayan API'leri çağırın.
- İzinleri bildirmek yerine işlevleri gerçekleştirmek için belirli niyetleri veya etkinlik işleyicileri çağırın.
- Sistem, farklı dosya işlemleri için yerleşik sözleşmeler sağlar ve özel sözleşmeleri destekler.
Bir izin beyan etmeniz gerekiyorsa her zaman kullanıcının kararına saygı gösterin ve uygulamanızın deneyimini zarif bir şekilde düşürmenin bir yolunu sunun.
Bu sayfada, herhangi bir izne ihtiyaç duyulmadan uygulamanızın yerine getirebileceği çeşitli kullanım alanları açıklanmaktadır.
Yakındaki yerleri göster
Uygulamanızın, kullanıcının yaklaşık konumunu bilmesi gerekebilir. Bu, yakındaki restoranlar gibi konuma duyarlı bilgileri göstermek için yararlıdır.
Bazı kullanım alanları için yalnızca bir cihazın konumuna ilişkin kaba bir tahmin gerekir. Bu durumlarda, uygulamanızın konuma duyarlı bilgilere ne sıklıkla ihtiyaç duyduğuna bağlı olarak aşağıdakilerden birini yapın:
- Uygulamanız sık sık konum bilgisine ihtiyaç duyuyorsa
ACCESS_COARSE_LOCATION
iznini beyan edin. Bu izin, yaklaşık konum doğruluğu ile ilgili belgelerde açıklandığı gibi konum hizmetlerinden cihaz konum tahmini sağlar. - Uygulamanız daha seyrek veya yalnızca bir kez konum bilgisine ihtiyaç duyuyorsa kullanıcıdan bunun yerine bir adres veya posta kodu girmesini isteyebilirsiniz.
Diğer kullanım alanları, bir cihazın konumunun daha kesin bir şekilde tahmin edilmesini gerektirir. Yalnızca bu durumlarda ACCESS_FINE_LOCATION
iznini beyan edebilirsiniz.
Dosya oluşturma ve dosyalara erişme
Android, depolama alanı veya sensörlerle ilgili izinleri bildirmenize gerek kalmadan dosya oluşturmanıza ve dosyalara erişmenize olanak tanır.
Medya dosyalarını aç
Uygulamanız, kullanıcıların fotoğraf ve videolarından (ör. mesaj ekleri veya profil resimleri) seçim yapmasına olanak tanıyabilir.
Bu işlevi desteklemek için fotoğraf seçiciyi kullanın. Fotoğraf seçiciyi kullanmak için çalışma zamanı izni gerekmez. Bir kullanıcı uygulamanızla paylaşılacak fotoğraf veya videoları seçmek için fotoğraf seçiciyle etkileşimde bulunduğunda sistem, seçilen medya dosyalarıyla ilişkilendirilen URI'ye geçici okuma erişimi verir.
Uygulamanızın fotoğraf seçiciyi kullanmadan medya dosyalarına erişmesi gerekiyorsa herhangi bir depolama izni beyan etmeniz gerekmez:
- Uygulamanızın oluşturduğu medya dosyalarına erişirseniz uygulamanız, medya mağazasında bu dosyalara zaten erişebilir.
- Diğer uygulamaların oluşturduğu medya dosyalarına erişiyorsanız Depolama Alanı Erişimi Çerçevesi'ni kullanın.
Dokümanları aç
Uygulamanız, kullanıcının kendi uygulamanızda veya başka bir uygulamada oluşturduğu dokümanları gösterebilir. Yaygın bir örnek olarak metin dosyaları verilebilir.
Bu durumda, READ_EXTERNAL_STORAGE
öğesini yalnızca eski cihazlarla uyumlu olması için beyan edin. android:maxSdkVersion
özelliğini 28
olarak ayarlayın.
Dokümanı hangi uygulamanın oluşturduğuna bağlı olarak aşağıdakilerden birini yapın:
- Kullanıcı, dokümanı uygulamanızda oluşturduysa doğrudan erişin.
- Kullanıcı, dokümanı başka bir uygulamada oluşturduysa Depolama Alanı Erişimi Çerçevesi'ni kullanın.
Fotoğraf çekme
Kullanıcılar, önceden yüklenmiş sistem kamerası uygulamasını kullanarak uygulamanızda fotoğraf çekebilir.
Bu durumda CAMERA
iznini beyan etmeyin. Bunun yerine ACTION_IMAGE_CAPTURE
amaç işlemini çağırın.
Video kaydet
Kullanıcılar, önceden yüklenmiş sistem kamerası uygulamasını kullanarak uygulamanızda video kaydedebilir.
Bu durumda CAMERA
iznini beyan etmeyin. Bunun yerine ACTION_VIDEO_CAPTURE
amaç işlemini çağırın.
Uygulamanızın bir örneğini çalıştıran cihazı tanımlama
Uygulamanızın belirli bir örneğinin, hangi cihazda çalıştığını bilmesi gerekebilir. Bu, TV cihazları ve giyilebilir cihazlar için farklı oynatma listeleri gibi cihaza özgü tercihleri veya mesajları olan uygulamalar için faydalıdır.
Bu durumda, cihazın IMEI'sine doğrudan erişmeyin. Aslında Android 10'dan itibaren bu işlemi yapamazsınız. Bunun yerine, aşağıdakilerden birini yapın:
- Örnek Kimliği kitaplığını kullanarak uygulamanızın örneği için benzersiz bir cihaz tanımlayıcısı alın.
- Uygulamanızın depolama alanını kapsayan kendi tanımlayıcınızı oluşturun.
randomUUID()
gibi temel sistem işlevlerini kullanın.
Bluetooth üzerinden bir cihazla eşleme
Uygulamanız, verileri Bluetooth üzerinden başka bir cihaza aktararak gelişmiş bir deneyim sunabilir.
Bu işlevi desteklemek için ACCESS_FINE_LOCATION
,
ACCESS_COARSE_LOCATIION
veya BLUETOOTH_ADMIN
izinlerini beyan etmeyin. Bunun yerine, tamamlayıcı cihaz eşleme kullanın.
Otomatik olarak bir ödeme kartı numarası girin
Google Play Hizmetleri, ödeme kartı numarasını otomatik olarak girmenizi sağlayan bir kitaplık sunar. CAMERA
iznini beyan etmek yerine banka ve kredi kartı tanıma kitaplığını kullanabilirsiniz.
Telefon aramalarını ve kısa mesajları yönetme
Android ve Google Play Hizmetleri, telefon aramaları veya SMS mesajlarıyla ilgili herhangi bir izin bildirmenize gerek kalmadan telefon çağrılarını ve kısa mesajları yönetmenize olanak tanıyan kitaplıklar sunar.
Tek kullanımlık şifre kodunu otomatik olarak girin
İki faktörlü kimlik doğrulama iş akışını kolaylaştırmak için uygulamanız, kullanıcının kimliğini doğrulamak üzere cihazına gönderilen tek seferlik şifre kodunu otomatik olarak girebilir.
Google Play Hizmetleri tarafından desteklenen cihazlarda bu işlevi desteklemek için READ_SMS
iznini beyan etmeyin. Bunun yerine SMS Retriever API'sini kullanın.
Diğer cihazlarda, uygulamanız Android 8.0 (API düzeyi 26) veya sonraki sürümleri hedefliyorsa createAppSpecificSmsToken()
kullanarak uygulamaya özel bir jeton oluşturun. Bu jetonu, doğrulama SMS mesajı gönderebilen başka bir uygulamaya veya hizmete iletin.
Kullanıcının telefon numarasını otomatik olarak girin
Daha verimli satış veya destek sağlamak için uygulamanız, kullanıcının cihazının telefon numarasını otomatik olarak girmesini sağlayabilir.
Google Play Hizmetleri tarafından desteklenen cihazlarda bu işlevi desteklemek için READ_PHONE_STATE
iznini beyan etmeyin. Bunun yerine, Telefon Numarası İpucu kitaplığını kullanın.
Telefon aramalarını filtrele
Kullanıcı için gereksiz kesintileri en aza indirmek amacıyla uygulamanız telefon çağrılarında spam filtresi uygulayabilir.
Bu işlevi desteklemek için READ_PHONE_STATE
iznini beyan etmeyin.
Bunun yerine CallScreeningService
API'yi kullanın.
Telefon araması yapma
Uygulamanız bir kişinin bilgilerine dokunarak telefon araması yapma özelliği sunabilir.
Bu işlevi desteklemek için ACTION_CALL
işlemi yerine ACTION_DIAL
intent işlemini kullanın. ACTION_CALL
, bazı tabletler gibi çağrı yapamayan cihazların uygulamanızı yüklemesini engelleyen CALL_PHONE
yükleme zamanı iznini gerektirir.
Uygulamanız kesintiye uğradığında medyayı duraklatın
Kullanıcı bir telefon çağrısı alırsa veya kullanıcı tarafından yapılandırılmış bir alarm oluşursa uygulamanız, ses odağını tekrar kazanana kadar medya oynatmayı duraklatmalıdır.
Bu işlevi desteklemek için READ_PHONE_STATE
iznini beyan etmeyin. Bunun yerine, sistem ses odağını değiştirdiğinde otomatik olarak çalışan onAudioFocusChange()
etkinlik işleyicisini uygulayın.
Ses odaklanmasını uygulama hakkında daha fazla bilgi edinin.
Barkodları tara
Android, Google Play Hizmetleri tarafından desteklenen Google Code Scanner API'yi destekler. Bu API, herhangi bir kamera izni bildirmenize gerek kalmadan barkodların kodunu çözmenizi sağlar. Bu API, kullanıcı gizliliğini korumaya yardımcı olur ve barkod tarama kullanım alanınız için özel bir kullanıcı arayüzü oluşturma ihtiyacını azaltır.
API, barkodu tarar ve yalnızca tarama sonuçlarını uygulamanıza döndürür. Görüntüler cihazda işlenir ve Google hiçbir veri veya tarama sonucunu depolamaz.
Uygulamanızın karmaşık kullanım alanlarını veya barkod biçimlerini desteklemesi gerekiyorsa ya da özel bir kullanıcı arayüzü gerekiyorsa bunun yerine ML Kit barkod tarama API'sini kullanın.