Android广播接收机管理

Android广播接收机管理,android,broadcastreceiver,smsmanager,Android,Broadcastreceiver,Smsmanager,在我的Android应用程序中,当收到短信时,我的broacast启动。 我想管理当我收到一个新的短信时,当第一个还没有完成。 我想干掉第一道工序。 但我不知道该怎么做。 如果你能帮助我。 我是安卓系统的大人物。 这是我的布罗卡斯特密码 谢谢 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundl

在我的Android应用程序中,当收到短信时,我的broacast启动。 我想管理当我收到一个新的短信时,当第一个还没有完成。 我想干掉第一道工序。 但我不知道该怎么做。 如果你能帮助我。 我是安卓系统的大人物。 这是我的布罗卡斯特密码

谢谢

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.text.TextUtils;

public class SMSReceiver extends BroadcastReceiver {
private static final String number = "15555215556";

@Override
public void onReceive(Context context, Intent intent) {

    Bundle bundle = intent.getExtras();
    Object[] messages = (Object[]) bundle.get("pdus");
    SmsMessage[] sms = new SmsMessage[messages.length];

    // Creation
    for (int i=0; i < messages.length; i++) {
        sms[i] = SmsMessage.createFromPdu((byte[]) messages[i]);
    }
    for (SmsMessage msg : sms) {

        // Vérifie
        if (TextUtils.equals(msg.getOriginatingAddress(), number)) {
            Intent i = new Intent(context, DisplayActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            String sms2 = msg.getMessageBody();
            i.putExtra("SMS",sms2);
            context.startActivity(i);

            abortBroadcast();
        }
    }

}
}
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.telephony.sms消息;
导入android.text.TextUtils;
公共类SMSReceiver扩展了BroadcastReceiver{
私有静态最终字符串编号=“155552155556”;
@凌驾
公共void onReceive(上下文、意图){
Bundle=intent.getExtras();
对象[]消息=(对象[])bundle.get(“PDU”);
SmsMessage[]sms=新SmsMessage[messages.length];
//创作
for(int i=0;i
我想管理当我收到一个新的短信时,当第一个还没有完成

我不太清楚,您不应该在广播中做任何繁重的工作,您最好将必要的数据复制到ie.共享首选项或数据库,并启动IntentService进一步处理它。使用
IntentService
可以在
Intent
中直接将数据传递给服务

但是从你的代码中,我看不到任何长处理

杀死第一个进程


在安卓系统下,这总是一个坏主意(请看这里的详细解释:)。还有
abortBroadcast()你的意图?要取消通知吗?

我知道了,谢谢。当我的brodcast开始时,音乐播放:context.startActivity(i);我的问题是如果同时有两条短信音乐混合。看到了吗?不确定问题出在哪里,如果您只想要单个活动,那么在启动活动时使用FLAG\u activity\u single\u TOP FLAG。您的活动将在“void onNewIntent”中收到新的意图。我认为以下操作应该可以使您的活动成为单个实例:在意图创建期间:
intent.FLAG_activity_single_TOP | intent.FLAG_activity_new_TASK
,并在活动清单中:
android:launchMode=“singleTask”
。感谢您的回答。是这样的,但有一个重要的问题。当我收到短信时,我将其保存在数据库sqlite中。他们现在成了一个问题。当第二条短信到达时,他没有保存bz。但是第一个救了我。你有主意吗?谢谢你的帮助。如果我能停止第一项任务,开始新的任务