Uygulama izinlerini bildirme

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

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.