You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用app_process调用IAccountManager.removeAccountExplicitly时遇异常求助

解决app_process执行dex时的ClassNotFoundException与Account删除权限问题

一、先修复ClassNotFoundException

你的执行命令存在致命语法错误:export CLASSPATH = /data/local/tmp/classes.dex中CLASSPATH与=之间的空格会导致环境变量赋值失效,app_process无法定位到你的dex文件中的类。

修正后的执行命令:

su system -c "export CLASSPATH=/data/local/tmp/classes.dex; app_process / ma.NotificationPolicy.Main"

额外检查项:

  • 确保/data/local/tmp/classes.dex的权限允许system用户读取:
    chmod 644 /data/local/tmp/classes.dex
    chown system:system /data/local/tmp/classes.dex
    
  • 验证dex文件中确实包含目标类,可使用dexdump工具:
    dexdump -f /data/local/tmp/classes.dex | grep "ma.NotificationPolicy.Main"
    

二、处理Account删除权限问题

root用户无法删除的原因

Android系统AccountManager存在安全限制:uid 0(root)不允许删除特定类型的账号(如你遇到的org.telegram.messenger类型),该限制无法通过root直接绕过。

system用户执行的权限验证

切换到system用户解决ClassNotFound问题后,仍需确认权限是否足够:

  1. android.permission.REMOVE_ACCOUNTS属于签名级权限,只有系统签名的应用才能获取,普通system身份调用仍可能被拦截。
  2. 账号删除通常需要账号所属应用的授权,仅靠system身份未必能通过AccountManager的权限校验。

替代方案

若system用户仍无法删除,可尝试以下方法:

  • 使用账号所属应用的uid执行:通过ps | grep org.telegram.messenger找到Telegram对应的uid(格式为u0_aXXX),然后用su u0_aXXX -c "..."执行你的dex。
  • 借助系统Settings应用的权限:你的代码中调用getAccountsAsUser时传入了com.android.settings作为caller,可尝试让dex以该应用身份执行,利用其系统权限完成删除操作。

内容的提问来源于stack exchange,提问作者giao语满级

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:46:31