Uygulama izinlerini bildirme

İ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:

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.