可能重复:
确定是否有根设备上运行
我想知道一个电话只是是否被根深蒂固,不要求root权限。 我怎样才能做到这一点?
- 测试如果
File.Exists("/system/bin/su")
不知道,我想我不能由于权限 - 如果安装了超级用户的应用程序测试? 嗯,我想我需要使用特殊权限
PackageManager
和超级用户是不是onlu苏经理(我知道SuperSU为例) - 试图运行
su
是不是一种选择,因为它触发苏提示,这是我不希望在非root程序
任何想法? 我的目的是要获得多少设备是植根匿名的统计数据,显然与用户的同意:)
选项1。它是可能的,它不需要任何特殊的许可。
选项2根植手机可能不附带任何超级用户管理器应用程序。
选项3正如你所说,这是不检测的好办法。
此外,还有另一种选择是,检查ro.build.tag(使用getprop | grep ro.buil.tag
或android.os.Build.TAG
)如果它包含testkeys
字符串。
编辑:对于选项1,我建议你用的setuid / setgid权限找到(即find / -perm -2000 -o -perm -4000
,并检查是否是苏在列表中)
你不能可靠地做到这一点,因为它意味着对于要“扎根”电话并不总是相同的。 什么所有的建议,你会得到做的是测试一些流行的根源相关的工具。 但它无法检测,如果手机一直扎根在不使用这些工具的方法。