İzin kullanma 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:
- Bu izin, normal izin veya imza izni gibi bir yükleme zamanı izni ise yükleme sırasında otomatik olarak verilir.
- İzin bir ç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 cihaza yüklendiyse çalışma zamanı iznini veya özel izni istemeniz 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
öğesinde şu satır bulunur:
<manifest ...> <uses-permission android:name="android.permission.CAMERA"/> <application ...> ... </application> </manifest>
Donanımın isteğe bağlı olduğunu belirt
CAMERA
gibi bazı izinler, uygulamanızın yalnızca bazı Android cihazlarda bulunan donanım parçalarına erişmesine izin verir. 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 göz önünde bulundurun. Ç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
özelliğini false
olarak ayarlayarak donanımı isteğe bağlı olarak tanımlamak daha iyi olur:
<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 bu donanıma sahip olmayan bir cihazda çalışabilir. 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 bu özelliği dikkatlice 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. }
İzinleri API düzeyine göre 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) izin beyan etmek için <uses-permission>
öğesi yerine <uses-permission-sdk-23>
öğesini ekleyin.
Bu öğelerden birini kullanırken, Android'in belirtilen değerden yüksek bir sürümünü ç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 beyan edip android:maxSdkVersion
özelliğini 28 olarak ayarlayabilirsiniz.