現在のAndroid Permission System では、次の問題が発生します。
アプリ A は、次のカスタム アクセス許可を定義します。
com.package.permission.READ_APP_DATA
アプリ B がカスタム アクセス許可を宣言してインストールされると、それが付与されます。
ただし、アプリ B の後にアプリ A がインストールされた場合、アプリ B には権限が付与されません。
これはよくあることではないかもしれませんが、アプリ B はアプリ A のプラグインであることが多いため、もちろん発生する可能性があり、私のアプリケーションでは発生します。
SuperUser アプリケーションがこれのグローバル カスタム許可を導入することに同意するとandroid.permission.ACCESS_SUPERUSER
、ユーザーが SuperUser アプリを切り替えることを決定した場合、大きな問題になる可能性があります。
この問題を処理するために、宣言を開始しようとしているカスタム アクセス許可に対して、アプリケーションで次のコードを使用する予定です。
checkPermissions(this, getCallingActivity().getPackageName()); // get the package name from the sender first
private boolean checkPermissions(Context context, String callingPackage) {
final List<PackageInfo> apps = context.getPackageManager().getInstalledPackages(PackageManager.GET_PERMISSIONS);
for (PackageInfo pi : apps) {
if (pi.packageName.equals(callingPackage)) {
String[] permissions = pi.requestedPermissions;
if (permissions != null) {
for (String permission : permissions) {
if (permission.equals("com.package.permission.READ_APP_DATA")) {
return true;
}
}
}
}
}
return false;
この質問のタイトルによると、この方法は「安全」ですか? または、アプリケーションのマニフェストがインストールされ、プログラムでアプリ B に「追加」された後にアプリケーションのマニフェストを変更できる方法/ルートハックはありますか?