本文主要是介绍【Android】【root remount 】【1】java中如何判断设备是否在root状态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
客户需求,需要判断设备是否执在root状态。可以理解为是否执行了adb root 设置root状态,已经adb unroot设置unroot状态。
代码分析
分析adb deamon发现:在执行adb root 、adb unroot指令时,系统会更新service.adb.root 变量。
void restart_root_service(unique_fd fd) {if (getuid() == 0) {WriteFdExactly(fd.get(), "adbd is already running as root\n");return;}if (!__android_log_is_debuggable()) {WriteFdExactly(fd.get(), "adbd cannot run as root in production builds\n");return;}LOG(INFO) << "adbd restarting as root";android::base::SetProperty("service.adb.root", "1");WriteFdExactly(fd.get(), "restarting adbd as root\n");
}void restart_unroot_service(unique_fd fd) {if (getuid() != 0) {WriteFdExactly(fd.get(), "adbd not running as root\n");return;}LOG(INFO) << "adbd restarting as nonroot";android::base::SetProperty("service.adb.root", "0");WriteFdExactly(fd.get(), "restarting adbd as non root\n");
}
实现
系统应用可以通过SystemProperties get ”service.adb.root“ value来判断是否root。
public static final String ADB_ROOT_PROP = "service.adb.root";public static boolean deviceIsRooted(){
return SystemProperties.getInt(ADB_ROOT_PROP,0) == 1 ? true:false;
}
这篇关于【Android】【root remount 】【1】java中如何判断设备是否在root状态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!