我写了一个应用程序,主要用于发送和接收短信。实际上,它会向设备发送一些命令,并从该设备获取答案,以显示给用户。我定义了这个应用的主要活动如下:
<activity
android:name=".MainActivity"
android:launchMode="singleTask">
</activity>定义为singleTask,以避免多个实例同时运行。在MainActivity内部,我添加了onNewIntent()方法,以便在此活动在前台运行时获得对它的新调用:
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秒,收到短信后自动解锁手机,但我不知道怎么做?
发布于 2013-10-30 21:52:36
解决方案是使用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();
}https://stackoverflow.com/questions/14323498
复制相似问题