重複の可能性:
ルート化されたデバイスで実行されているかどうかを確認する
Android アプリケーションを作成していますが、アプリケーションが root 化されたデバイスで実行されているかどうかを知りたいです。
Google で調べてみましたが、確かな解決策は 1 つも思いつきませんでした。
同様の質問がstackoverflowで以前に尋ねられましたが、解決策はありません。これらのリンクで提供されている解決策は、私のデバイスでは機能しません。Runtime.exec("su") でも動作しません。
Android デバイスがプログラムによってルート化されているかどうかを判断していますか?
デバイスがルート化されていることを確認する方法はありますか? それができない場合、Google はデバイスがルート化されているかどうかをどのように確認できますか?
Runtime.exec("su") を実行すると、例外 10-15 18:36:36.445: W/System.err(668): java.io.IOException: Error running exec() が発生します。コマンド: [su] 作業ディレクトリ: null 環境: null
public static boolean isDeviceRooted_BySu() {
try {
Log.d("BySu", "BySu");
Process p = Runtime.getRuntime().exec("su");
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
ADB シェルから確認したところ、「#」プロンプトが表示されたので、デバイスが少なくともシェル ルートになっていることを確認できます。シェルがルート化されていることを考えると、ルート化されたデバイスで実行されているかどうかを判断するで提供されるソリューションは少なくとも機能するはずですが、それも機能しません。