在 Android 中,权限被分为几个不同的类别,每个类别有不同的申请和管理方式。
一、 普通权限(Normal Permissions)
普通权限通常不会对用户隐私或设备安全造成太大风险。这些权限在应用安装时自动授予,无需用户在运行时手动授权。
- android.permission.INTERNET
- android.permission.ACCESS_NETWORK_STATE
- android.permission.ACCESS_WIFI_STATE
普通权限需要时只要在 AndroidManifest.xml 文件中声明即可:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
......
</manifest>
二、 危险权限(Dangerous Permissions)
危险权限可能会对用户隐私或设备安全造成风险。这些权限需要用户在运行时手动授权。从 Android 6.0(API 级别 23)开始,应用需要在运行时请求这些权限。
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.CAMERA
- android.permission.RECORD_AUDIO
- android.permission.ACCESS_FINE_LOCATION
危险权限需要在运行时手动申请权限:
package com.example.helloworld.file
import android.Manifest
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import com.example.helloworld.R
class PermissionActivity: AppCompatActivity() {
// 运行时权限
private val requestPermissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) {
isGranted ->
if (isGranted) {
// 权限被授予
Toast.makeText(this, "Permission granted", Toast.</