ประกาศสิทธิ์ของแอป

ดังที่ได้กล่าวไว้ในเวิร์กโฟลว์การใช้ สิทธิ์ หากแอปขอแอป คุณต้องประกาศสิทธิ์เหล่านี้ในไฟล์ Manifest ของแอป ประกาศเหล่านี้ช่วยให้ App Store และผู้ใช้เข้าใจชุดสิทธิ์ ที่แอปของคุณอาจขอ

ขั้นตอนการขอสิทธิ์ขึ้นอยู่กับประเภทของ สิทธิ์:

เพิ่มการประกาศลงในไฟล์ Manifest ของแอป

หากต้องการประกาศสิทธิ์ที่แอปของคุณอาจขอ ให้ระบุ <uses-permission> องค์ประกอบใน ไฟล์ Manifest ของแอป เช่น แอปที่จำเป็นต้องเข้าถึงกล้อง มีบรรทัดนี้ใน AndroidManifest.xml:

<manifest ...>
    <uses-permission android:name="android.permission.CAMERA"/>
    <application ...>
        ...
    </application>
</manifest>

ประกาศว่าฮาร์ดแวร์เป็นแบบไม่บังคับ

สิทธิ์บางรายการ เช่น CAMERA อนุญาตให้แอปของคุณ เข้าถึงฮาร์ดแวร์ที่มีอยู่เฉพาะอุปกรณ์ Android บางรุ่นเท่านั้น หากแอปของคุณ ขอยืนยันรายการใดรายการหนึ่งที่เกี่ยวข้องกับฮาร์ดแวร์เหล่านี้ สิทธิ์ ให้พิจารณาว่าแอปจะยังทำงานในอุปกรณ์ที่ไม่มีฟีเจอร์ดังกล่าวได้หรือไม่ ฮาร์ดแวร์ ในกรณีส่วนใหญ่ ฮาร์ดแวร์นั้นเป็นตัวเลือก ดังนั้นจึงควรประกาศ (ไม่บังคับ) โดยการตั้งค่า android:required เป็น false ใน ประกาศ <uses-feature> เป็น แสดงในข้อมูลโค้ดต่อไปนี้จากไฟล์ AndroidManifest.xml

<manifest ...>
    <application>
        ...
    </application>
    <uses-feature android:name="android.hardware.camera"
                  android:required="false" />
<manifest>

ระบุความพร้อมใช้งานของฮาร์ดแวร์

หากคุณประกาศว่าฮาร์ดแวร์เป็นแบบไม่บังคับ แอปของคุณอาจทำงานใน อุปกรณ์ที่ไม่มีฮาร์ดแวร์ดังกล่าว ถ้าต้องการตรวจสอบว่าอุปกรณ์มี ของฮาร์ดแวร์ hasSystemFeature() ดังที่แสดงในข้อมูลโค้ดต่อไปนี้ หากฮาร์ดแวร์ไม่พร้อมใช้งาน ปิดใช้งานคุณลักษณะนั้นในแอปของคุณอย่างมีชั้นเชิง

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

หากต้องการประกาศสิทธิ์เฉพาะในอุปกรณ์ที่รองรับสิทธิ์รันไทม์ ซึ่ง คืออุปกรณ์ที่ใช้ Android 6.0 (API ระดับ 23) ขึ้นไปจะมี <uses-permission-sdk-23> แทนที่จะเป็น องค์ประกอบ <uses-permission>

เมื่อใช้องค์ประกอบเหล่านี้ คุณจะตั้งค่าแอตทริบิวต์ maxSdkVersion ได้ เพื่อระบุว่าอุปกรณ์ที่ใช้ Android เวอร์ชันสูงกว่า ค่าที่ระบุไม่ต้องใช้สิทธิ์เฉพาะ ซึ่งช่วยให้คุณ กำจัดสิทธิ์ที่ไม่จำเป็นในขณะที่ยังคงให้ความสามารถในการใช้งานร่วมกัน สำหรับอุปกรณ์รุ่นเก่า

เช่น แอปของคุณอาจแสดงเนื้อหาสื่อ เช่น รูปภาพ หรือวิดีโอที่ผู้ใช้สร้าง ขณะอยู่ในแอปของคุณ ในกรณีนี้ คุณไม่จำเป็นต้องใช้ READ_EXTERNAL_STORAGE สิทธิ์ในอุปกรณ์ที่ ใช้ Android 10 (API ระดับ 29) ขึ้นไปตราบใดที่แอปของคุณกำหนดเป้าหมาย Android 10 ขึ้นไป แต่เพื่อให้เข้ากันได้กับอุปกรณ์รุ่นเก่า คุณสามารถประกาศสิทธิ์ READ_EXTERNAL_STORAGE และตั้งค่า android:maxSdkVersion ถึง 28