0

我编写了一个与发送和接收短信有关的应用程序。实际上,它会向设备发送一些命令并从该设备获取答案以显示给用户。我定义了这个应用程序的主要活动如下:

<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秒并自动解锁手机但我不知道如何?

4

1 回答 1

0

解决方案是使用WakeLock如下“

@Override
public void onReceive(Context context, Intent intent) {
    PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
    wl.acquire();
    // your code ...
    wl.release();
}
于 2013-10-30T13:52:36.350 回答