4

I have an application where I create a process and call the dumpsys telephony.registry command to get information about the mobile network status.

String[] cmds={"dumpsys telephony.registry"};
Process p = Runtime.getRuntime().exec(cmds [0]+"\n");

and then after that I parse the result of the command. For "ls" or other commands it works fine. For dupmsys I get Permission Denial: can't dump telephony.registry from pid-953, uid=10090. I get the same error results for dumpsys power or other dumpsys commands.

I have set DUMP permissions android.permission.DUMP in the android Manifest like suggested here

I think that I am doing this right since Android offers this feature here

I have also done the step described here to force eclipse to allow me to give my application DUMP permission in the manifest.

When I execute the dumpsys command I always get the same result

Permission Denial: can't dump telephony.registry from pid-953, uid=10090

Am I doing something wrong? Why does android OS still deny me access to the dump service ?

PS I have set min API 8 and I am testing the application on device running (ICS) API 15

4

5 回答 5

7

为什么 android OS 仍然拒绝我访问转储服务?

因为该权限在 Android 2.3+ 上被标记为android:protectionLevel="signature|system|development"(或signatureOrSystem使用旧语法),因此不能由普通 Android SDK 应用程序持有。

于 2013-07-05T16:40:37.253 回答
5

还有另一种(hacky)方法可以在dumpsys不生根设备的情况下进行访问 - 通过adb shell

这将需要允许 USB 调试,并找到 adb 服务的端口。

  1. 在您的设备上启用 USB 调试。此选项位于Settings->下Developer Options

  2. 将您的设备连接到 PC,然后从 PC 的 shell/命令行运行以下命令: adb tcpip 12345. 然后,从您的设备外壳,从您的应用程序发出命令adb connect localhost:12345。您现在可以断开设备与 USB 的连接。或者,您可以在没有 USB 连接的情况下一一扫描设备上的端口,使用adb connect localhost:<portnum>并找到 adb 服务正在侦听的端口。

  3. 如果出现提示,请从弹出的确认对话框中授权 USB 调试。选中“始终”复选框以不再需要此步骤。

  4. 现在,当您可以访问 adb 服务时,使用adb shell dumpsys ...您的应用程序代码来获取您需要的任何服务转储。

注意:您不需要该DUMP权限即可工作。

于 2014-06-08T10:01:08.973 回答
1

它报告您通常无法获得的核心 Android 服务的私有值。 官方文件说“不供第三方应用程序使用”。

于 2015-04-13T03:28:34.833 回答
1

android 开发团队决定停止向第三方应用授予这些权限。现在只有系统应用程序可以获取它们。

更多详情:https ://code.google.com/p/acra/issues/detail?id=100

于 2015-01-27T12:27:35.690 回答
-1

在您的清单“android.permission.DUMP”上添加权限。我还没有尝试过,但它在 adb shell 上显示它缺少该权限

于 2017-07-20T21:28:19.500 回答