ดังที่ได้กล่าวไว้ในเวิร์กโฟลว์การใช้ สิทธิ์ หากแอปขอแอป คุณต้องประกาศสิทธิ์เหล่านี้ในไฟล์ Manifest ของแอป ประกาศเหล่านี้ช่วยให้ App Store และผู้ใช้เข้าใจชุดสิทธิ์ ที่แอปของคุณอาจขอ
ขั้นตอนการขอสิทธิ์ขึ้นอยู่กับประเภทของ สิทธิ์:
- หากสิทธิ์นั้นเป็นเวลาติดตั้ง สิทธิ์ เช่น สิทธิ์ปกติ สิทธิ์หรือลายเซ็น สิทธิ์ดังกล่าวจะเกิดขึ้นโดยอัตโนมัติที่ ของเวลาติดตั้ง
- หากสิทธิ์นั้นเป็นรันไทม์ สิทธิ์หรือพิเศษ สิทธิ์ และหากแอปของคุณ ที่ติดตั้งในอุปกรณ์ที่ใช้ Android 6.0 (API ระดับ 23) ขึ้นไป คุณต้อง ขอสิทธิ์รันไทม์หรือพิเศษ ตัวคุณเองได้
เพิ่มการประกาศลงในไฟล์ 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