我正在尝试使用 Google 在我的 Android 应用程序中发布的 SecureRandom 解决方法: http://android-developers.blogspot.com/2013/08/some-securerandom-thoughts.html
这项工作涉及写入(和读取)/dev/urandom。但是,三星似乎以阻止应用程序访问/dev/urandom 的方式启用了 SELinux。
我没有这些设备之一,所以我很难测试解决方案,除了在 Android 市场上推出解决方法的尝试之外,但这似乎不是我可以解决的错误用 try catch block 陷阱。 File.canRead 和 canWrite 似乎也返回 true。您可以在以下类的 supportedOnThisDevice 方法中看到我尝试的解决方法: PRNGFixes.java
我正在寻找一种可靠的方法来检测我是否属于此类设备,如果是,则不应用 Google SecureRandom 解决方法。
最佳答案
这是我检查 SELinux 是否处于强制模式的方法 - 可以通过任何 Shell 脚本完成,不依赖于 RootTools:
private static boolean isSELinuxEnforcing() {
try {
CommandCapture command = new CommandCapture(1, "getenforce");
RootTools.getShell(false).add(command).waitForFinish();
boolean isSELinuxEnforcing = command.toString().trim().equalsIgnoreCase("enforcing");
return isSELinuxEnforcing;
} catch (Exception e) {
// handle exception
}
return false;
}
关于android - 如何检测 SELinux 是否在 Android 应用程序中启用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727941/