بررسی روت بودن گوشی در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به بررسی روت بودن گوشی در برنامه نویسی اندروید می پردازیم زمانی که یک گوشی روت می شود باعث می شود بخشی از دسترسی امنیتی گوشی نیز از دست برود و در گوشی شما می توانید به root گوشی که فایل های مهم سیستمی در آن قرار دارد نیز دسترسی پیدا کنید به همین علت از بخش برنامه نویسی نیز امکانات خاصی برای برنامه نویس ایجاد می شود تا بتوان گوشی کاربر را نیز کنترل کرد به طور مثال بدون اینکه کاربر انتخاب کند یک سرویس از نوع accessibility را ادمین گوشی کنید در ادامه با ما همراه باشید.
برای اینکه بررسی کنید می تونید از void زیر استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public static boolean isRooted() { // get from build info String buildTags = android.os.Build.TAGS; if (buildTags != null && buildTags.contains("test-keys")) { return true; } // check if /system/app/Superuser.apk is present try { File file = new File("/system/app/Superuser.apk"); if (file.exists()) { return true; } } catch (Exception e1) { // ignore } // try executing commands return canExecuteCommand("/system/xbin/which su") || canExecuteCommand("/system/bin/which su") || canExecuteCommand("which su"); } // executes a command on the system private static boolean canExecuteCommand(String command) { boolean executedSuccesfully; try { Runtime.getRuntime().exec(command); executedSuccesfully = true; } catch (Exception e) { executedSuccesfully = false; } return executedSuccesfully; } |
در کد بالا بررسی می شود که آیا در بخش system فایلی به نام SuperUser وجود دارد یا خیر. زمانی که یک گوشی روت می شود SuperUser نیز در آن نصب می شود.
راه دوم
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | private static boolean isRooted() { return findBinary("su"); } public static boolean findBinary(String binaryName) { boolean found = false; if (!found) { String[] places = {"/sbin/", "/system/bin/", "/system/xbin/", "/data/local/xbin/", "/data/local/bin/", "/system/sd/xbin/", "/system/bin/failsafe/", "/data/local/"}; for (String where : places) { if ( new File( where + binaryName ).exists() ) { found = true; break; } } } return found; } |
بررسی کردن اینکه ببینم مقدار باینری دستور su وجود دارد یا خیر در گوشی های مختلف ممکن است در جاهای مختلفی وجود داشته باشد به طور معمول دستور su کار نمی کند در اندروید.
این آموزش هم به پایان رسید.
موفق و موید باشید.