在 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.fileimport 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.Rclass PermissionActivity: AppCompatActivity() {// 運行時權限private val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted ->if (isGranted) {// 權限被授予Toast.makeText(this, "Permission granted", Toast.</