studio significado quitar pasado español como bar app aplicación actionbar android android-activity android-source

significado - ¿Qué significa @hide en el código fuente de Android?



quitar action bar android studio (2)

  1. @hide se usa para cosas que deben ser visibles por diversas razones, pero que no forman parte de la API publicada. No se incluirán en la documentación cuando extraiga automágicamente la API de la fuente.

  2. Tienes razón, no puedes anularlo. Esto es normal, eso es por diseño, ya que está marcado como final . Debería poder usarlo , aunque un editor puede no mostrarlo como una de las opciones en cualquier intellisense que use porque está marcado con @hide , y debe tomar nota del punto 3 a continuación.

  3. No debe usarlo en absoluto, ya que no forma parte de la API y los desarrolladores pueden eliminarlo cuando lo deseen. Incluso estarían dentro de sus derechos, si estuvieran sádicamente inclinados, reemplazarlo con una función que bloqueara el dispositivo en el que se ejecutaba (aunque tal vez no en un estricto sentido legal).

Para el código fuente de la Activity , línea 3898 (cerca de la parte inferior):

/** * @hide */ public final boolean isResumed() { return mResumed; }

¿Qué significa @hide ?

Encontré que mi public class ChildActivity extends Activity { ... } no puede usar / ver Activity.isResumed() . ¿Esto es normal? ¿Cómo puedo acceder?


Android tiene dos tipos de API a las que no se puede acceder a través de SDK.

El primero se encuentra en el paquete com.android.internal. El segundo tipo de API es una colección de clases y métodos que están marcados con el atributo @hide javadoc .

Los métodos ocultos todavía se puede acceder a través de la reflexión de Java. El atributo @hide es solo parte de javadoc (también en droiddoc), por lo que @hide simplemente significa que el método / clase / campo está excluido de los documentos API.

Por ejemplo, el método checkUidPermission en ActivityManager.java es @hide.

/** @hide */ public static int checkUidPermission(String permission, int uid) { try { return AppGlobals.getPackageManager() .checkUidPermission(permission, uid); } catch (RemoteException e) { // Should never happen, but if it does... deny! Slog.e(TAG, "PackageManager is dead?!?", e); } return PackageManager.PERMISSION_DENIED; }

Sin embargo, podemos llamarlo por reflexión.

Class c; c = Class.forName("android.app.ActivityManager"); Method m = c.getMethod("checkUidPermission", new Class[] {String.class, int.class}); Object o = m.invoke(null, new Object[]{"android.permission.READ_CONTACTS", 10010});

Actualización: Google publicó una publicación de blog que indica que comienza a restringir el acceso a las API indocumentadas u ocultas en Android. Así que llamarlo por reflexión está muy desaconsejado ahora. Por favor tenga esto en cuenta.