web-dev-qa-db-fra.com

Que représente l'annotation @UnsupportedAppUsage

Je crée une application d'entreprise qui dispose d'une autorisation système et nécessite l'utilisation d'une fonction de la classe BluetoothAdapter setScanMode. Ceci est une API cachée qui n'est disponible que pour les apks signés par le système, maintenant cette fonction a @UnsupportedAppUsage au-dessus, quelqu'un peut-il m'aider à comprendre cette annotation.

https://Android.googlesource.com/platform/frameworks/base/+/master/core/Java/Android/bluetooth/BluetoothAdapter.Java

9
Manishika

Si nous allons à la source d'annotation :

/**
 * 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}
 */

Fondamentalement, cela signifie qu'il est utilisé par des applications, même s'il ne fait pas techniquement partie du SDK et n'est donc pas pris en charge. Cela semble être plus un avertissement pour quiconque contribue à l'AOSP plutôt que quelque chose dont vous devez trop vous inquiéter.

4
TheWanderer

La description de la source d'annotation ci-dessus est correcte. Je reçois une exception dans mon code pour Pie maintenant où elle n'était pas auparavant. Je définis la couleur du gestionnaire de curseur par certains champs de TextView.class qui ne sont plus pris en charge et provoquent une exception lorsque je ne peux pas définir la couleur de la poignée dans Pie. Ce n'est pas seulement un avertissement.

2
Thomas