İzin kullanımı iş akışında belirtildiği gibi, uygulamanız uygulama izinleri istiyorsa bu izinleri uygulamanızın manifest dosyasında beyan etmeniz gerekir. Bu beyanlar, uygulama mağazalarının ve kullanıcıların, uygulamanızın isteyebileceği izin grubunu anlamalarına yardımcı olur.
İzin isteme süreci iznin türüne bağlıdır:
- İzin, normal izin veya imza izni gibi yükleme zamanı izni ise yükleme sırasında otomatik olarak izin verilir.
- İzin, çalışma zamanı izni veya özel izin ise ve uygulamanız Android 6.0 (API düzeyi 23) veya sonraki sürümleri çalıştıran bir cihazda yüklüyse çalışma zamanı iznini veya özel izni talep etmeniz gerekir.
Uygulama manifestine beyan ekle
Uygulamanızın isteyebileceği bir izni beyan etmek için uygulamanızın manifest dosyasına uygun <uses-permission>
öğesini ekleyin. Örneğin, kameraya erişmesi gereken bir uygulamada AndroidManifest.xml
şu satıra sahiptir:
<manifest ...> <uses-permission android:name="android.permission.CAMERA"/> <application ...> ... </application> </manifest>
Donanımı isteğe bağlı olarak tanımla
CAMERA
gibi bazı izinler, uygulamanızın yalnızca bazı Android cihazlarda bulunan donanım parçalarına erişmesini sağlar. Uygulamanız donanımla ilişkili izinlerden birini beyan ediyorsa söz konusu donanıma sahip olmayan bir cihazda çalışmaya devam edip edemeyeceğini düşünün. Çoğu durumda donanım isteğe bağlıdır. Bu yüzden, bir AndroidManifest.xml
dosyasındaki aşağıdaki kod snippet'inde gösterildiği gibi <uses-feature>
bildiriminizde android:required
değerini false
olarak ayarlayarak donanımı isteğe bağlı olarak tanımlamak daha iyidir:
<manifest ...> <application> ... </application> <uses-feature android:name="android.hardware.camera" android:required="false" /> <manifest>
Donanım kullanılabilirliğini belirleme
Donanımın isteğe bağlı olduğunu belirtirseniz uygulamanızın bu donanıma sahip olmayan bir cihazda çalışması mümkündür. Bir cihazda belirli bir donanım olup olmadığını kontrol etmek için aşağıdaki kod snippet'inde gösterildiği gibi hasSystemFeature()
yöntemini kullanın. Donanım yoksa uygulamanızda o özelliği düzgün bir şekilde devre dışı bırakın.
Kotlin
// Check whether your app is running on a device that has a front-facing camera. if (applicationContext.packageManager.hasSystemFeature( PackageManager.FEATURE_CAMERA_FRONT)) { // Continue with the part of your app's workflow that requires a // front-facing camera. } else { // Gracefully degrade your app experience. }
Java
// Check whether your app is running on a device that has a front-facing camera. if (getApplicationContext().getPackageManager().hasSystemFeature( PackageManager.FEATURE_CAMERA_FRONT)) { // Continue with the part of your app's workflow that requires a // front-facing camera. } else { // Gracefully degrade your app experience. }
API düzeyine göre izin bildirme
Yalnızca çalışma zamanı izinlerini destekleyen cihazlarda, yani Android 6.0 (API düzeyi 23) veya sonraki sürümleri çalıştıran cihazlarda bir izin bildirmek için <uses-permission>
öğesi yerine <uses-permission-sdk-23>
öğesini ekleyin.
Bu öğelerden birini kullanırken, belirtilen değerden daha yüksek bir Android sürümü çalıştıran cihazların belirli bir izne ihtiyaç duymadığını belirtmek için maxSdkVersion
özelliğini ayarlayabilirsiniz. Bu, eski cihazlar için uyumluluk sağlamaya devam ederken gereksiz izinleri ortadan kaldırmanıza olanak tanır.
Örneğin, uygulamanız, kullanıcının uygulamanızda oluşturduğu fotoğraf veya video gibi medya içeriklerini gösterebilir. Bu durumda, uygulamanız Android 10 veya sonraki sürümleri hedeflediği sürece, Android 10 (API düzeyi 29) veya sonraki sürümleri çalıştıran cihazlarda READ_EXTERNAL_STORAGE
iznini kullanmanız gerekmez. Ancak eski cihazlarla uyumluluk için READ_EXTERNAL_STORAGE
iznini belirtip android:maxSdkVersion
değerini 28 olarak ayarlayabilirsiniz.