在Android中,處理權限回調主要涉及到兩個方面:檢查權限和請求權限。以下是一些關鍵步驟:
ContextCompat.checkSelfPermission()
方法來檢查權限狀態。例如,檢查存儲權限是否已被授予:if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// 存儲權限尚未被授予
} else {
// 存儲權限已被授予
}
ActivityCompat.requestPermissions()
方法向用戶請求權限。首先,創建一個包含所需權限的字符串數組,然后調用requestPermissions()
方法。例如,請求存儲權限:String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE);
其中REQUEST_CODE
是一個整數常量,用于標識權限請求。您可以根據需要選擇任何唯一的值。
onRequestPermissionsResult()
方法以處理權限請求的結果。這個方法會在用戶做出權限決策后被調用。它接收三個參數:請求碼、權限數組和結果數組。您可以根據請求碼和結果數組來判斷用戶是否已授予所需權限。例如:@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 存儲權限已被授予,您可以執行相關操作
} else {
// 存儲權限未被授予,您可以提示用戶原因并處理錯誤情況
}
}
}
請注意,從Android 11(API級別30)開始,處理權限的方式發生了一些變化。在Android 11中,您需要使用ActivityResultContracts.RequestPermission()
來請求權限,而不是直接調用requestPermissions()
方法。此外,您還需要在AndroidManifest.xml
中為應用啟用requestLegacyExternalStorage
屬性,以便在較舊的版本上正確處理存儲權限。