Los answer from Ashwin obras para las versiones de Android 4.2.2 (es decir, por debajo de debajo de la versión 17) En 4.2.2, el método "expandir" se cambió a "expandNotificationsPanel". Si no utiliza ese nombre de método para 4.2.2 y superior, obtendrá una excepción de puntero nulo. Por lo que el código debe ser:
Object sbservice = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method showsb;
if (Build.VERSION.SDK_INT >= 17) {
showsb = statusbarManager.getMethod("expandNotificationsPanel");
}
else {
showsb = statusbarManager.getMethod("expand");
}
showsb.invoke(sbservice);
y apropiado permiso debe añadirse a AndroidManifest
.
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
Obviamente, esto no es parte de la API publicada, por lo que no se garantiza que funcione en el futuro y mucha gente le aconsejaría en contra de hacer esto.
¿El getSystemService ("barra de estado") devolver un objeto? –
sí lo hace. Pero no puedo asignarlo a StatusBarManager porque no forma parte de la API pública. Entonces, ahora mismo lo tengo como tipo "Objeto". ¿Qué puedo hacer para que sea utilizable? – user496854