Определить, запущено ли устройство Android программно?
Возможный дубликат:
Определите, работает ли на корневом устройстве
Как вы определяете (программно), если Android-устройство: rooted Запуск треснувшей копии вашего программного обеспечения или романа.
У меня есть некоторая конфиденциальная информация в моей базе данных, и я хотел бы ее зашифровать, когда телефон укоренен, так как пользователь имеет доступ к базе данных. Как это обнаружить?
Ответы
Ответ 1
Это то, что вам нужно:
/**
* Checks if the device is rooted.
*
* @return <code>true</code> if the device is rooted, <code>false</code> otherwise.
*/
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;
}
Возможно, не всегда правильно. Протестировано на ~ 10 устройствах.
Ответ 2
Если информация чувствительна, вы должны, вероятно, просто зашифровать ее для всех пользователей. В противном случае пользователь мог бы установить ваше приложение без корневого каталога, а затем root и прочитать вашу базу данных после записи данных.
Ответ 3
официальное руководство по лицензированию говорит:
Ограничение наследия механизм защиты от копирования на Android Рынок заключается в том, что приложения, использующие его может устанавливаться только на совместимые устройства, обеспечивающие безопасный внутренний среда хранения. Например, защищенное от копирования приложение не может быть загружен с Market на устройство который обеспечивает root-доступ, и приложение не может быть установлено на SD-карты устройства.
Кажется, что вам удастся использовать эту устаревшую защиту для предотвращения установки вашего приложения на корневых устройствах.
Вы можете опубликовать отдельную версию, которая может быть установлена на корневых устройствах с зашифрованной базой данных.