Что изображает аннотация @UnsupportedAppUsage

Я создаю корпоративное приложение, которое имеет системные разрешения и требует использования функции из класса BluetoothAdapter setScanMode. Это скрытый API, который доступен только для подписанных системой apks, теперь эта функция имеет @UnsupportedAppUsage над ним, может ли кто-нибудь помочь мне понять эту аннотацию.

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/bluetooth/BluetoothAdapter.java

21
0
13 936
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если мы перейдем к источник аннотации:

/**
 * Indicates that a class member, that is not part of the SDK, is used by apps.
 * Since the member is not part of the SDK, such use is not supported.
 *
 * <p>This annotation acts as a heads up that changing a given method or field
 * may affect apps, potentially breaking them when the next Android version is
 * released. In some cases, for members that are heavily used, this annotation
 * may imply restrictions on changes to the member.
 *
 * <p>This annotation also results in access to the member being permitted by the
 * runtime, with a warning being generated in debug builds.
 *
 * <p>For more details, see go/UnsupportedAppUsage.
 *
 * {@hide}
 */

По сути, это означает, что он используется приложениями, хотя технически он не является частью SDK и, следовательно, не поддерживается. Похоже, это скорее предупреждение для всех, кто вносит свой вклад в AOSP, а не то, о чем вам нужно слишком сильно беспокоиться.

Приведенное выше описание источника аннотации верное. Я получаю исключение в моем коде для Pie сейчас, где его не было раньше. Я устанавливаю цвет обработчика курсора некоторыми полями в TextView.class, которые теперь не поддерживаются и вызывают исключение, когда я не могу установить цвет ручки в Pie. Это не просто предупреждение.

Этот флаг - просто предупреждение. Вы получаете ошибку из-за скрытого черного списка API, представленного в Pie и дополнительно ограниченного в Q. Я написал несколько способов обойти это ограничение здесь: stackoverflow.com/questions/55970137/…

TheWanderer 17.07.2019 13:47

Другие вопросы по теме