在接收到另一个 class 的广播信号时将 activity 放在前面

Bring activity in front on receiving Broadcast signal from another class

我有 main activity,它只是为 ACTION_USER_RESENT 注册了广播接收器。我在另一个class中写了接收广播信号的代码如下。

 public class ReceiverScreen extends BroadcastReceiver{
      @Override
      public void onReceive(Context context, Intent intent) {
           // TODO Auto-generated method stub
           if(intent.getAction().equals(Intent.ACTION_USER_PRESENT))
           {
                //?
           }
      }
 }

场景: 当我 运行 程序它 运行s 并且我没有退出程序并且只是按下设备上的主页按钮即应用保持 运行ning.

问题: 当我锁定和解锁手机时,它显示手机的主屏幕。但我希望我的应用程序在解锁手机后显示。我应该在上面的 if 条件中写什么,以便我的应用程序首先可见。

请帮忙...

您可以在 onReceive() 中编写以下代码。

public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals(Intent.ACTION_USER_PRESENT))
        {

            Intent intent = new Intent(context,YourActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        }
    }

因此,当屏幕解锁时,您的应用程序将收到 ACTION_USER_PRESENT 广播,您可以从那里开始您的应用程序 Activity。

标志 FLAG_ACTIVITY_NEW_TASK 是必需的,否则您的应用程序将因 java.lang.RuntimeException 而崩溃,因为从 Activity 上下文外部调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK旗帜。