在Android系統中,應用程序的權限分為兩類:運行時權限(Runtime Permissions)和系統權限(System Permissions)。運行時權限是在運行時動態申請的,而系統權限是在安裝應用時授予的。
對于需要管理權限的應用,通常需要申請系統權限。以下是一些常見的系統權限及其用途:
要申請系統權限,你需要在應用的AndroidManifest.xml
文件中聲明所需的權限,然后在運行時動態申請權限。以下是一個簡單的示例,展示如何在運行時申請READ_EXTERNAL_STORAGE
權限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
在代碼中動態申請權限:
private static final int REQUEST_READ_EXTERNAL_STORAGE = 1;
private void requestReadExternalStoragePermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_READ_EXTERNAL_STORAGE);
} else {
// 已經具有權限,可以執行相關操作
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_READ_EXTERNAL_STORAGE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 權限被授予,可以執行相關操作
} else {
// 權限被拒絕,提示用戶
Toast.makeText(this, "需要READ_EXTERNAL_STORAGE權限才能訪問文件", Toast.LENGTH_SHORT).show();
}
}
}
請注意,從Android 6.0(API級別23)開始,需要在運行時動態申請權限。對于Android 11(API級別30)及以上版本,還需要考慮系統權限的約束和分區存儲(Scoped Storage)。