#android #linux #flutter #android-studio
Вопрос:
можно ли заблокировать установку приложения Android на корневом устройстве?
Я хочу заблокировать установку приложения Android на корневом устройстве.
Как это сделать?
Я хочу заблокировать установку приложения Android на корневом устройстве.
Как это сделать?
Ответ №1:
Я не знаю, можно ли это сделать или нет, но то, что вы можете сделать, это сделать ваше приложение непригодным для использования на корневом устройстве, что означает, что пользователь не сможет его использовать, даже если оно установлено.
для этого все, что вам нужно сделать, это определить, запущено ли ваше приложение на корневом устройстве или нет, с помощью любого из приведенных ниже методов (код для Android)
public class RootUtil {
public static boolean isDeviceRooted() {
return checkRootMethod1() || checkRootMethod2() || checkRootMethod3();
}
private static boolean checkRootMethod1() {
String buildTags = android.os.Build.TAGS;
return buildTags != null amp;amp; buildTags.contains("test-keys");
}
private static boolean checkRootMethod2() {
String[] paths = { "/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su",
"/system/bin/failsafe/su", "/data/local/su", "/su/bin/su"};
for (String path : paths) {
if (new File(path).exists()) return true;
}
return false;
}
private static boolean checkRootMethod3() {
Process process = null;
try {
process = Runtime.getRuntime().exec(new String[] { "/system/xbin/which", "su" });
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
if (in.readLine() != null) return true;
return false;
} catch (Throwable t) {
return false;
} finally {
if (process != null) process.destroy();
}
}
}
и затем, если device is rooted
затем navigate
на » с сообщением типа «приложение не может быть запущено на корневом устройстве» с. exit button
Для Flutter
вы можете использовать пакет trust_fall из pub.dev,
import 'package:trust_fall/trust_fall.dart';
bool isJailBroken = await TrustFall.isJailBroken;