通过代码检查Android应用程序是前景还是设备背景

时间:2014-03-06 04:48:55

标签: android push-notification app-startup

我想确定我的应用是否位于设备上的前景或背景中。 在我的应用程序中,当我在设备上获得推送通知时,我需要识别1.应用程序是在后台还是前台? 2.应用程序当前/上次打开的活动是什么。

还有一件事,我还想找出应用设置的“显示通知”复选框的复选框值(选中/取消选中)(找到它去设置 - > app manager->从列表中选择我的应用程序)。根据此复选框的值,不同的代码将在我的应用程序中执行。

感谢您的帮助,

感谢你。

2 个答案:

答案 0 :(得分:0)

您可以使用onwindowFocusChanged()方法来确定您的窗口(活动)是获得(前景)还是丢失(背景)焦点。这是功能:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);

//write your code here

}

您可以将此添加到您的活动中

答案 1 :(得分:0)

public boolean IsAppForeground(Context context){

ActivityManager activityManager =(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);     列出appProcesses = activityManager.getRunningAppProcesses();     if(appProcesses == null){       返回false;     }     final String packageName = context.getPackageName();     for(RunningAppProcessInfo appProcess:appProcesses)  {   if(appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND&& appProcess.processName.equals(packageName))     {         返回true;       }     } return false;   }