與手機相同,存取 AI 眼鏡上的相機和麥克風等敏感硬體時,必須取得使用者的明確同意。這些權限視為智慧眼鏡專用權限,應用程式必須在執行階段要求這些權限,即使應用程式已在手機上取得相應權限,也必須這麼做。
在應用程式資訊清單中宣告權限
要求權限之前,您必須先在應用程式的資訊清單檔案中宣告權限,方法是使用 <uses-permission> 元素。無論權限是適用於手機或 AI 眼鏡專屬功能,這項聲明都相同,但您仍須明確要求眼鏡專屬硬體或功能。
<manifest ...>
<!-- Only declare permissions that your app actually needs. In this example,
we declare permissions for the camera. -->
<uses-permission android:name="android.permission.CAMERA"/>
<application ...>
...
</application>
</manifest>
註冊權限啟動器
如要要求 AI 眼鏡的權限,請先使用 ActivityResultLauncher 和 ProjectedPermissionsResultContract 方法註冊權限啟動器。
// Register the permissions launcher using the ProjectedPermissionsResultContract. private val requestPermissionLauncher: ActivityResultLauncher<List<ProjectedPermissionsRequestParams>> = registerForActivityResult(ProjectedPermissionsResultContract()) { results -> if (results[Manifest.permission.CAMERA] == true) { isPermissionDenied = false initializeGlassesFeatures() } else { // Handle permission denial. isPermissionDenied = true } }
程式碼重點
- 程式碼會使用
ProjectedPermissionsResultContract方法建立ActivityResultLauncher。回呼會收到權限名稱對應授予狀態的地圖。 - 您需要指定應用程式所需的權限,例如
Manifest.permission.CAMERA或Manifest.permission.RECORD_AUDIO。
建立要求函式
接下來,您將建立一個函式,使用應用程式的權限啟動器在執行階段向使用者要求權限。
private fun requestHardwarePermissions() { val params = ProjectedPermissionsRequestParams( permissions = listOf(Manifest.permission.CAMERA), rationale = "Camera access is required to overlay digital content on your physical environment." ) requestPermissionLauncher.launch(listOf(params)) }
程式碼重點
requestHardwarePermissions函式會建構ProjectedPermissionsRequestParams物件。這個物件會將應用程式需要的權限清單和使用者可見的理由綁在一起。請清楚簡潔地說明應用程式需要這些權限的原因。- 在啟動器上呼叫
launch會觸發權限要求使用者流程。 - 應用程式應在啟動器的回呼中,妥善處理授權和拒絕結果。
建立權限檢查函式
接著,您將建立一個函式,檢查使用者是否已授予應用程式權限。
private fun hasCameraPermission(): Boolean { return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED }
新增權限要求邏輯
最後,建立邏輯,在執行階段使用這些函式檢查及要求權限。
if (hasCameraPermission()) { initializeGlassesFeatures() } else { requestHardwarePermissions() }
程式碼重點
- 如果使用者已授予應用程式必要權限,系統會呼叫
initializeGlassesFeatures函式,初始化應用程式體驗。這項功能是 AI 眼鏡應用程式活動的一部分。
瞭解權限要求使用者流程
使用 ProjectedPermissionsResultContract 方法啟動權限要求時,系統會在 AI 眼鏡和手機上啟動協調式使用者流程。
在權限使用者流程中,應用程式和使用者可能會遇到下列情況:
在 AI 眼鏡上:投影裝置 (眼鏡) 會顯示活動,指示使用者查看手機以繼續操作。
在手機上:活動會同時在主機裝置 (手機) 上啟動。這個畫面會顯示您提供的理由字串,並讓使用者選擇繼續或取消。
手機:如果使用者接受理由,手機上會顯示修改後的 Android 系統權限對話方塊,告知使用者授予權限的對象是 AI 眼鏡裝置 (而非手機),使用者可以正式授予或拒絕權限。
接收結果:使用者做出最終選擇後,手機和 AI 眼鏡上的活動都會關閉。接著,系統會叫用
ActivityResultLauncher回呼,並傳送對應,其中包含每個要求權限的授予狀態。