My application allows launching of other application from mine. None of my activity shows Status Bar.But when launching other applications like Camera the user can access the status bar
.So i tried the following code snippet for collapsing the Status Bar
inside a service(So it collapse every time and code running always).
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = null;
if(currentapiVersion <= 16){
collapse = statusbarManager.getMethod("collapse");
}else{
collapse = statusbarManager.getMethod("collapsePanels");
}
collapse.setAccessible(true);
collapse.invoke(service);
Now i want to collapse status bar
only if user try to expand this.Is there any intent
or intent filter
exist for detect expanding of Status bar
?
Thanks in Advance
There is no callback of any kind when the notification bar is dragged down on Android.
This is because Android apps are meant to be designed in a way that the notification bar coming up and going away does not affect the functioning in any way.
In your activity override the onWindowFocusChanged()
and write the below code.
This uses the permission
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
try
{
if(!hasFocus)
{
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = statusbarManager.getMethod("collapse");
collapse .setAccessible(true);
collapse .invoke(service);
}
}
catch(Exception ex)
{
if(!hasFocus)
{
try {
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = statusbarManager.getMethod("collapse");
collapse .setAccessible(true);
collapse .invoke(service);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ex.printStackTrace();
}
}
}