Uygulama kalitesini artırma ve kullanıcı gizliliğini koruma kapsamında, uygulamalarınızda izin kullanımını en aza indirmenizi öneririz. Bu sayede kullanıcılar, güvenli bir kullanıcı ortamı sağlayan yüksek kaliteli uygulamaları keşfedip kullanabilir.
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 istediğini ve paylaştığını incelemeniz gerekir. Bazı özellikle hassas izinler ve API'ler, verilerinize erişme, verileri 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ın yalnızca yaklaşık konuma ihtiyacı varsa tam konum bilgisi yerine yaklaşık konum bilgisi sağlayan izinleri beyan edin.
- Uygulamanızın, izinleri bildirmeden istenen işlevi gerçekleştirmesine olanak tanıyan API'leri çağırın.
- İzinleri bildirmek yerine işlevleri gerçekleştirmek için belirli amaçları veya etkinlik işleyicilerini çağırın.
- Sistem, farklı dosya işlemleri için yerleşik sözleşmeler sunar ve özel sözleşmeleri de destekler.
Bir izni beyan etmeniz gerekiyorsa her zaman kullanıcının kararına saygı gösterin ve uygulamanızın deneyimini kontrollü bir şekilde azaltmanın bir yolunu sunun.
Bu sayfada, uygulamanızın herhangi bir izin ihtiyacı beyan etmeden 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 kullanışlıdır.
Bazı kullanım alanlarında cihazın konumunun kabaca tahmin edilmesi yeterlidir. Bu gibi durumlarda, uygulamanızın konuma duyarlı bilgilere ne sıklıkta ihtiyaç duyduğuna bağlı olarak aşağıdakilerden birini yapın:
- Uygulamanızın sık sık konuma ihtiyacı varsa
ACCESS_COARSE_LOCATION
iznini beyan edin. Bu izin, yaklaşık konum doğruluğu ile ilgili dokümanlarda açıklandığı gibi konum hizmetlerinden alınan cihaz konum tahminini sağlar. - Uygulamanızın konuma daha seyrek veya yalnızca bir kez ihtiyacı varsa kullanıcıdan bunun yerine adres ya da posta kodu girmesini isteyebilirsiniz.
Diğer kullanım alanlarında ise cihazın konumunun daha doğru tahmin edilmesi gerekir. Bu durumlar, ACCESS_FINE_LOCATION
izninin bildirilmesinin uygun olduğu tek zamanlardır.
Dosya oluşturma ve dosyalara erişme
Android, depolama veya sensörlerle ilgili herhangi bir izin bildirmenize gerek kalmadan dosya oluşturmanıza ve dosyalara erişmenize olanak tanır.
Medya dosyalarını açma
Uygulamanız, kullanıcıların fotoğrafları ve videoları arasından seçim yapmasına olanak tanıyor olabilir. Örneğin, mesaj ekleri veya profil resimleri için bu özellik kullanılabilir.
Bu işlevi desteklemek için fotoğraf seçiciyi kullanın. Fotoğraf seçiciyi kullanmak için herhangi bir çalışma zamanı izni gerekmez. Kullanıcı, uygulamanızla paylaşılacak fotoğraf veya videoları seçmek için fotoğraf seçiciyle etkileşime girdiğinde sistem, seçilen medya dosyalarıyla ilişkili 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 bildirmeniz gerekmez:
- Uygulamanızın oluşturduğu medya dosyalarına erişiyorsanız uygulamanızın medya deposundaki bu dosyalara zaten erişimi vardır.
- Diğer uygulamaların oluşturduğu medya dosyalarına erişiyorsanız Depolama Erişim Çerçevesi'ni kullanın.
Dokümanları açma
Uygulamanız, kullanıcının uygulamanızda veya başka bir uygulamada oluşturduğu dokümanları gösterebilir. Metin dosyası, yaygın bir örnektir.
Bu durumda, READ_EXTERNAL_STORAGE
yalnızca eski cihazlarla uyumluluk için beyan edin. android:maxSdkVersion
değerini 28
olarak ayarlayın.
Dokümanı oluşturan uygulamaya 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 Storage Access Framework'ü kullanın.
Fotoğraf çekin
Kullanıcılar, önceden yüklenmiş sistem kamera 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 kaydetme
Kullanıcılar, önceden yüklenmiş sistem kamera 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ı belirleme
Uygulamanızın belirli bir örneğinin hangi cihazda çalıştığını bilmesi gerekebilir. Bu özellik, cihazlara özel tercihler veya mesajlaşma içeren uygulamalar (ör. TV cihazları ve giyilebilir cihazlar için farklı oynatma listeleri) için kullanışlıdır.
Bu durumda, cihazın IMEI'sine doğrudan erişmeyin. Hatta Android 10'dan itibaren bunu yapamazsınız. Bunun yerine aşağıdakilerden birini yapın:
- Instance ID kitaplığını kullanarak uygulamanızın örneği için benzersiz bir cihaz tanımlayıcısı alın.
- Uygulamanızın depolama alanıyla sınırlı 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 daha iyi bir deneyim sunabilir.
Bu işlevselliği desteklemek için ACCESS_FINE_LOCATION
, ACCESS_COARSE_LOCATIION
veya BLUETOOTH_ADMIN
izinlerini bildirmeyin. Bunun yerine eşlik eden cihaz eşlemesini kullanın.
Ödeme kartı numarasını otomatik olarak girme
Google Play Hizmetleri, ödeme kartı numarasını otomatik olarak girmenizi sağlayan bir kitaplık sunar. CAMERA
iznini bildirmek 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 aramalarını ve kısa mesajları yönetmenize olanak tanıyan kitaplıklar sunar.
Bir defalık şifreyi otomatik olarak girme
İ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 şifreyi otomatik olarak girebilir.
Google Play Hizmetleri tarafından desteklenen cihazlarda bu işlevselliği desteklemek için READ_SMS
iznini bildirmeyin. Bunun yerine SMS Retriever API'yi kullanın.
Uygulamanız Android 8.0 (API düzeyi 26) veya sonraki sürümleri hedefliyorsa diğer cihazlarda 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 girme
Uygulamanız, daha verimli satış veya destek sağlamak için kullanıcının cihazının telefon numarasını otomatik olarak girmesine izin verebilir.
Google Play Hizmetleri tarafından desteklenen cihazlarda bu işlevselliği desteklemek için READ_PHONE_STATE
iznini bildirmeyin. Bunun yerine Phone Number
Hint kitaplığını kullanın.
Telefon aramalarını filtreleme
Uygulamanız, kullanıcının gereksiz kesintiler yaşamasını önlemek için telefon görüşmelerini spam olarak filtreleyebilir.
Bu işlevi desteklemek için READ_PHONE_STATE
iznini bildirmeyin.
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
amaç işlemini kullanın. ACTION_CALL
, yükleme zamanı izni CALL_PHONE
gerektirir. Bu izin, arama yapamayan cihazların (ör. bazı tabletler) uygulamanızı yüklemesini engeller.
Uygulamanız kesintiye uğradığında medyayı duraklatma
Kullanıcı telefon görüşmesi yaparsa veya kullanıcı tarafından yapılandırılmış bir alarm çalarsa uygulamanız, ses odağını yeniden kazanana kadar tüm medya oynatmayı duraklatmalıdır.
Bu işlevi desteklemek için READ_PHONE_STATE
iznini bildirmeyin. Bunun yerine, sistem ses odağını değiştirdiğinde otomatik olarak çalışan onAudioFocusChange()
event işleyicisini uygulayın.
Ses odaklama özelliğini uygulama hakkında daha fazla bilgi edinin.
Barkodları tarama
Android, Google Play Hizmetleri tarafından desteklenen Google Code Scanner API'yi destekler. Bu API, herhangi bir kamera izni beyan etmeden barkodları çözmenize olanak tanır. 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şturmanız gerekme olasılığını azaltır.
API, barkodu tarar ve yalnızca tarama sonuçlarını uygulamanıza döndürür. Resimler cihazda işlenir ve Google hiçbir veriyi ya da tarama sonucunu saklamaz.
Uygulamanızın karmaşık kullanım alanlarını veya barkod biçimlerini desteklemesi ya da özel bir kullanıcı arayüzü gerektirmesi durumunda bunun yerine ML Kit barkod tarama API'sini kullanın.
Kullanılmayan izinleri sıfırlama
Android, kullanılmayan çalışma zamanı izinlerini varsayılan reddedilen durumlarına sıfırlamak için birden fazla yöntem sunar.
Tasarım yönergelerini okuyun.
Çalışma zamanında izin isteme
Uygulamanızın çalışma zamanı izinlerini beyan etmesi ve istemesi gerektiğini değerlendirdikten sonra bunu yapmak için belirli bir iş akışını izleyin.
Tasarım yönergelerini okuyun.
Uygulamanızın neden izinlere ihtiyacı olduğunu açıklayın
requestPermissions()
kullanıldığında, uygulamanızın kullanmak istediği izinleri belirten bir iletişim kutusu gösterilir ancak neden kullanmak istediği açıklanmaz. Bu durum, kullanıcıyı şaşırtabilir.
Bu iletişim kutusunun nasıl ve ne zaman gösterileceğiyle ilgili daha fazla bilgi ve öneri için tasarım kılavuzunu inceleyin.
Reddedilen izinleri ele alma
Uygulamanız, kullanıcıların izinleri reddetmenin sonuçlarını hem reddetmeden önce hem de reddettikten sonra anlamasına yardımcı olmalıdır.
Tasarım yönergelerini okuyun.