Я создаю корпоративное приложение, которое имеет системные разрешения и требует использования функции из класса BluetoothAdapter setScanMode. Это скрытый API, который доступен только для подписанных системой apks, теперь эта функция имеет @UnsupportedAppUsage над ним, может ли кто-нибудь помочь мне понять эту аннотацию.
Если мы перейдем к источник аннотации:
/**
* 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/…