最終的なクラスであるManifest.permissionのアクセス権のリストにアクセスしようとしています。宣言されたString値にはどのようにしてアクセスできますか?ここでプログラムでマニフェストにアクセスしますか?
0
A
答えて
1
、私は質問が単にパッケージで可能なアクセス許可ではなく、実行時の権限の一覧を取得する方法についてであると考えています。それが本当であると仮定すると、これは単に反射問題です。
あなたは(コンパイルされていない)、このような何かをするだろう:
List<Field> permissionFields = new ArrayList<Field>();
Field[] fields = Manifest.permission.class.getDeclaredFields();
for (Field declField : fields) {
if ((declField.getType() == String.class) && Modifier.isFinal(declField.getModifiers())) {
permissionFields.add(declField);
}
}
「permissionFields」リストには、許可値であるオブジェクトのリストを保持しています。 "Field.getObject(obj)"メソッドを使用してString値を取得することができます(奇妙なことに、 "Field.getString(obj)"メソッドはないようですが、 ) "メソッド(おそらくStringはプリミティブではないからです))。
0
コードは次のとおりです。
文字通りLog.d(TAG, "Getting permissions for " + packageName);
try {
PackageInfo pkgInfo = getPackageManager().getPackageInfo(
packageName,
PackageManager.GET_PERMISSIONS
);
PermissionInfo[] permissions = pkgInfo.permissions;
if (permissions == null) {
permissionsField.setText("No declared permissions");
}
else {
String permissionsText = "";
for (int i = 0; i < permissions.length; i++) {
switch (permissions[i].protectionLevel) {
case 0:
permissionsText += permissions[i].name + ":::" + "NORMAL" + "\n";
break;
case 1:
permissionsText += permissions[i].name + ":::" + "DANGEROUS" + "\n";
break;
case 2:
permissionsText += permissions[i].name + ":::" + "SIGNATURE" + "\n";
break;
case 3:
permissionsText += permissions[i].name + ":::" + "SIGNATUREORSYSTEM" + "\n";
break;
}
}
permissionsField.setText(permissionsText);
}
String[] requestedPermissions = pkgInfo.requestedPermissions;
if (requestedPermissions == null) {
requestedPermissionsField.setText("No requested permissions");
}
else {
String reqPermText = "";
for (int i = 0; i < requestedPermissions.length; i++) {
reqPermText += requestedPermissions[i] + "\n";
}
requestedPermissionsField.setText(reqPermText);
}
}
catch (PackageManager.NameNotFoundException e) {
permissionsField.setText("Package Not Found");
requestedPermissionsField.setText("Package Not Found");
}
+0
よくお読みください。それは私が求めていたものであったなら、これは良い反応でした。 – Phil
関連する問題
- 1. マニフェストにアプリケーションクラスを登録しますか?
- 2. アドホックネットワークのアドレッシングにプログラムでアクセスしますか?
- 3. SharePointリストとサブサイトにプログラムでアクセスしますか?
- 4. Cocoaアプリケーションからプログラムでメニュー項目にアクセスできますか?
- 5. DataTemplateからコントロールにプログラムでアクセスする
- 6. Android - プログラムでPROCESS_INCOMING_CALLSアクセス権にアクセスする
- 7. どのようにプログラムでDocStringにアクセスできますか?
- 8. Excelにプログラムでアクセスする
- 9. Pythonでulimitとsysctl.conf変数にプログラムでアクセスできますか?
- 10. dijit.Dialogにプログラムでアクセスできません
- 11. Google Reader:「加入者数」にプログラムでアクセスできますか?
- 12. Firebugのコンソール出力にプログラムでアクセスできますか?
- 13. プログラム的にAPIにアクセスできますか?
- 14. wp7 SIMからプログラムでアクセス
- 15. データベースに関するデータにプログラムでどのようにアクセスしますか?
- 16. 子プログラムRepeaterItemを使用してリピーターにプログラムでアクセスする
- 17. Android:プログラムからアクティビティスタックにアクセス
- 18. プログラムでアクセスし、modify.aspxページ
- 19. マニフェストでプログラムでデバッグ状態を読み取る
- 20. ACCESS_FINE_LOCATIONはマニフェストで付与されていますが、常にアクセス許可が拒否されていますか?
- 21. オフラインで使用するためのアクセス制御とキャッシュ・マニフェスト
- 22. 自動的にマニフェストにアクティビティを追加しますか?
- 23. HTML5キャッシュ(マニフェスト)を完全に無効にしますか?
- 24. は、wp7.1のバッテリー設定にプログラムでアクセスします
- 25. 呼び出し関数の名前にプログラムでアクセスできますか?
- 26. ワークボックス内のアイテムにプログラムでどのようにアクセスしますか?
- 27. Eclipseヘルプシステムにプログラムでアクセスするには?
- 28. maven2でコンパイル中にjarファイルにマニフェストを追加します
- 29. マニフェストのlaunchModeはサービスに影響しますか?
- 30. マニフェストを別のフォルダに作成しますか?
正確に私が必要としたもの。ありがとう! – Phil