我编写了一个与发送和接收短信有关的应用程序。实际上,它会向设备发送一些命令并从该设备获取答案以显示给用户。我定义了这个应用程序的主要活动如下:
<activity
android:name=".MainActivity"
android:launchMode="singleTask">
</activity>
它被定义为 singleTask 以避免同时运行多个实例。在 MainActivity 中,我添加了 onNewIntent() 方法,以便在该 Activity 在前台运行时获得新的调用:
public void onCreate(Bundle savedInstanceState) {
// ...
handleNewMessage(this.getIntent());
}
@Override
public void onNewIntent (Intent intent) {
// ...
handleNewMessage(intent);
}
在 sms BroadcastReceiver 中,我使用 FLAG_ACTIVITY_NEW_TASK 标志开始此活动,如下所示:
Intent intent = new Intent();
intent.putExtra("MESSAGE_BODY", sms.getBody());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(context, MainActivity.class);
context.startActivity(intent);
问题是
1- 有时我收到 3-4 条短信,但 MainActivity 没有启动。如果我接到电话,或解锁手机,所有消息都会同时启动应用程序(MainActivity)!
2-我想在收到短信后打开屏幕2-3秒并自动解锁手机但我不知道如何?