İzin isteklerinizi en aza indirin

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:

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:

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.