Как получить исчерпывающий список разрешений Android во время выполнения? - PullRequest
0 голосов
/ 17 марта 2012

Я пытаюсь получить исчерпывающий список всех возможных разрешений, доступных в общедоступном конечном классе Manifest.permission с использованием отражения Java.

Разрешение класса = Class.forName ("android.Manifest.permission");

но получаю ClassNotFoundException.

Может кто-нибудь подсказать, где я ошибаюсь?

1 Ответ

0 голосов
/ 17 марта 2012

Почему бы вам не сделать это так: Class permission = android.Manifest.permission.class; Это работает для меня в моем проекте Android, и я думаю, что это тоже немного аккуратнее. Вы получите ошибку (если есть) время компиляции, а не время выполнения, что также является преимуществом.

EDIT Причина, по которой ваш подход не будет работать: класс android.Manifest.permission принадлежит другому загрузчику классов. Я провел следующий эксперимент:

Log.i("Tag", "" + android.Manifest.permission.class.getClassLoader());
Log.i("Tag", "" + this.getClass().getClassLoader());

Результат был:

INFO/Tag(281): java.lang.BootClassLoader@4001bde0
INFO/Tag(281): dalvik.system.PathClassLoader[/data/app/com.company.android-2.apk]

Как только два класса имеют разные загрузчики классов, Class.forName не будет возвращать класс другого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...