我正在尝试运行一些安全(内部)api调用,我显然得到了安全性异常:
java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.provider.Telephony.SPN_STRINGS_UPDATED from pid=24864, uid=10107
Run Code Online (Sandbox Code Playgroud)
我试图从root运行相同的调用,但我不确定它是否可能在第一时间.我当然可以获得这样的root权限:
Process p = Runtime.getRuntime().exec("su");
Run Code Online (Sandbox Code Playgroud)
但它似乎没有做到这一点.我得到了相同的安全例外.我见过的其中一个示例试图先等待su呼叫完成,如下所示:
Process p = Runtime.getRuntime().exec("su");
p.waitFor();
Run Code Online (Sandbox Code Playgroud)
但这对我也没有帮助.那我做错了什么?有可能吗?
如果它很重要,我正在尝试使用PhoneFactory获取com.android.internal.telephony.Phone类的实例(使用反射获取它们).获得反射,它看起来像这样:
// Initialize the telephony framework
PhoneFactory.makeDefaultPhones(this);
// Get the default phone
Phone phone = PhoneFactory.getDefaultPhone();
Run Code Online (Sandbox Code Playgroud)
您的应用程序或服务需要使用与核心系统应用程序相同的密钥进行签名,并请求共享用户ID.如果你有一个可用的su命令,你可能正在运行一个自定义的固件; 检查提供它的人如何添加新的系统应用程序.
su命令不会更改调用它的进程的标识/权限 - 它的作用是让您启动具有提升权限的子进程.但它不是很清楚如何以这种方式启动Android应用程序(可能通过使用app_process - 但真正安装为系统应用程序是正确的方法).
另请注意,使您的应用成为系统应用仍然无法以root用户身份运行.
| 归档时间: |
|
| 查看次数: |
5360 次 |
| 最近记录: |