能否用ADB搭配PowerShell查询及调整三星S20(安卓13)的应用权限与设置?
借助ADB+PowerShell批量管理三星S20(Android 13)应用权限与功能
完全可以通过ADB结合PowerShell实现批量操作,以下是针对各类应用设置的具体操作方案:
一、批量查询并禁用应用通知
1. 列出所有通知已启用的应用
在PowerShell中执行以下命令,获取所有通知权限处于启用状态的应用包名:
adb shell dumpsys notification | Select-String "package=([a-zA-Z0-9.]+)" -AllMatches | ForEach-Object { $_.Matches.Groups[1].Value } | Sort-Object -Unique | ForEach-Object { $status = adb shell cmd notification is-enabled $_ if ($status -eq "enabled") { $_ } }
2. 批量禁用通知
将上述输出的包名列表批量传入禁用命令,直接执行:
adb shell dumpsys notification | Select-String "package=([a-zA-Z0-9.]+)" -AllMatches | ForEach-Object { $_.Matches.Groups[1].Value } | Sort-Object -Unique | ForEach-Object { if ((adb shell cmd notification is-enabled $_) -eq "enabled") { adb shell cmd notification disable $_ Write-Host "已禁用 $_ 的通知" } }
二、批量管理位置权限
1. 列出位置权限已启用的应用
获取所有允许使用精确定位/模糊定位的应用:
adb shell dumpsys appops | Select-String "([a-zA-Z0-9.]+)\s+ACCESS_FINE_LOCATION\s+allow" | ForEach-Object { $_.Matches.Groups[1].Value } | Sort-Object -Unique
2. 批量禁用位置权限
批量撤销应用的精确定位、模糊定位及后台定位权限:
$packages = adb shell dumpsys appops | Select-String "([a-zA-Z0-9.]+)\s+ACCESS_FINE_LOCATION\s+allow" | ForEach-Object { $_.Matches.Groups[1].Value } | Sort-Object -Unique foreach ($pkg in $packages) { adb shell appops set $pkg ACCESS_FINE_LOCATION deny adb shell appops set $pkg ACCESS_COARSE_LOCATION deny adb shell appops set $pkg ACCESS_BACKGROUND_LOCATION deny Write-Host "已禁用 $pkg 的位置权限" }
三、批量管理悬浮窗权限
1. 列出悬浮窗权限已启用的应用
获取允许显示悬浮窗的应用包名:
adb shell dumpsys appops | Select-String "([a-zA-Z0-9.]+)\s+SYSTEM_ALERT_WINDOW\s+allow" | ForEach-Object { $_.Matches.Groups[1].Value } | Sort-Object -Unique
2. 批量禁用悬浮窗权限
批量关闭应用的悬浮窗权限:
$packages = adb shell dumpsys appops | Select-String "([a-zA-Z0-9.]+)\s+SYSTEM_ALERT_WINDOW\s+allow" | ForEach-Object { $_.Matches.Groups[1].Value } | Sort-Object -Unique foreach ($pkg in $packages) { adb shell appops set $pkg SYSTEM_ALERT_WINDOW deny Write-Host "已禁用 $pkg 的悬浮窗权限" }
四、批量管理设备管理员权限
1. 列出已激活的设备管理员
获取当前已激活的设备管理员组件(注意:设备管理员是组件级,而非包级):
adb shell dpm list active-admin | Select-String "component=([a-zA-Z0-9./]+)" | ForEach-Object { $_.Matches.Groups[1].Value }
2. 批量移除设备管理员
批量移除已激活的设备管理员组件:
$admins = adb shell dpm list active-admin | Select-String "component=([a-zA-Z0-9./]+)" | ForEach-Object { $_.Matches.Groups[1].Value } foreach ($admin in $admins) { adb shell dpm remove-active-admin $admin Write-Host "已移除设备管理员 $admin" }
注意事项
- 操作前确保手机已开启USB调试,并在PowerShell中能正常连接ADB(可通过
adb devices验证)。 - 部分系统核心应用(如系统设置、电话)的权限禁用可能导致功能异常,操作前请确认目标应用。
内容的提问来源于stack exchange,提问作者Jonny
相关产品推荐
相关产品推荐

