root 化ずみ環境の判定について
たとえそれが root 化ずみ端末でなければメインの機能を果たさないアプリであったとしても、無垢な端末環境で実行した際に意味不明のエラーが発生するといった事態は避けるべきでしょう。 また、アプリによっては端末が root 化されていれば特定の機能を利用可能とし、そうでなければその機能を無効化するといった実装が必要になる場合もあるでしょう。 そのためには現在の端末環境が root 化ずみであるかそうでないかの判定を行う必要がありますね。
実際にはそれはなかなか根の深い話題ですが、常に十分ではないものの一定水準の実用性のある方法として、「Superuser がインストールされているか否かを調べる」というやり方が挙げられます。指定されたパッケージ名からそのアプリがインストールずみかそうでないかを真偽値 で返すコード例を示します。 Superuser のパッケージ名である “com.noshufou.android.su” を渡せばインストールの有無がわかる、というわけですね。import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
:
public boolean AppIsInstalled(String PackageName) {
PackageManager pm = mContext.getPackageManager();
try {
ApplicationInfo ai = pm.getApplicationInfo(PackageName, 0);
} catch (NameNotFoundException e) {
return false;
}
return true;
}
DSAS開発者の部屋:root 化ずみ端末に対応した Android アプリを書く方法
Android 端末を root 化するユーザが増えています。
その状況自体もいろいろ興味ぶかいのですが、ところで、その「root 権限を利用するアプリ」というものはどうやって書けばいいのでしょう?Google 公式の開発者向け資料は言うに及ばず、その他のリソースにも今のところほとんどこの話題に関する情報は見当たりません。そこで今回は、実際に手元のアプリを root 権限での実行に対応させる試みを通じて得た情報やノウハウを紹介したいと思います。
