运行时权限授予与撤销:替其他应用管理 Android 权限
原版 Shizuku 弃用、这里保留支持的第二组能力:直接为其他应用授予或撤销 Android 运行时权限。批量权限管理工具、自动化配置工具的核心能力就来自这两行 API。
接口签名
// 为其他应用授予运行时权限
Stellar.grantRuntimePermission(
packageName = "com.example.app",
permissionName = "android.permission.WRITE_EXTERNAL_STORAGE",
userId = 0
)
// 撤销运行时权限
Stellar.revokeRuntimePermission(
packageName = "com.example.app",
permissionName = "android.permission.WRITE_EXTERNAL_STORAGE",
userId = 0
)
userId 参数怎么填
0:主用户(绝大多数场景);- 其他值:工作资料、双开等副空间对应的 user id。跨用户操作需要服务身份具备相应能力,拿不准就只操作主用户。
典型应用形态
- 权限批量配置:新装机后一条脚本把常用应用的权限按预设授予;
- 权限回收:定时或按条件收回来路不明的敏感权限;
- 应用初始化向导:引导用户一次性完成目标应用的权限配置。
边界与提醒
- 撤销某些权限可能导致目标应用行为异常,工具类应用应在 UI 上向最终用户说明后果;
- 系统对特殊权限(如某些 AppOps 级别的控制)另有路径,运行时权限 API 不覆盖全部场景;
- 操作结果受服务身份影响:shell 身份能授予的范围与 root 不同,见服务状态解读。
同类能力若走用户服务实现,还能叠加更复杂的业务逻辑,见用户服务。