首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onCreate()在永久循环中执行

onCreate()在永久循环中执行
EN

Stack Overflow用户
提问于 2013-04-14 22:09:41
回答 2查看 273关注 0票数 0

App的基本思想是:

1) BroadcastReceiver,接收短信

2)当接收到sms时,调用另一个activity发送另一个SMS。

问题是,当BroadcastReceiver调用另一个活动(SMSMessaging)时,它的onCreate方法会被一次又一次地调用,因此SMS的消息会被一次又一次地发送。我的代码如下,请帮帮我!

这是我的BroadcastReciever类:

代码语言:javascript
复制
package com.example.testing;

import java.util.Arrays;
import java.util.List;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class Receiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        Bundle bundle = intent.getExtras();
        SmsMessage[] recievedMsgs = null;
        String str = "";
        if (bundle != null) {
            Object[] pdus = (Object[]) bundle.get("pdus");
            recievedMsgs = new SmsMessage[pdus.length];
            for (int i = 0; i < recievedMsgs.length; i++) {
                recievedMsgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                str += "SMS from " +
                recievedMsgs[i].getOriginatingAddress() +
                " :" +
                recievedMsgs[i].getMessageBody().toString();
            }
            try {
                Toast.makeText(context, str, Toast.LENGTH_SHORT).show();

                Intent i = new Intent(context,SMSMessaging.class);  
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
                context.startActivity(i);  
                Toast.makeText(context,"Yahoo",Toast.LENGTH_SHORT).show();
            } catch (Exception e) {

            }
        }
    }
}

这是我的SMSMessaging类:

代码语言:javascript
复制
package com.example.testing;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SMSMessaging extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SMSMessaging.class), 0);                
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage("03331234567", null, "auto sending ", pi, null);     
        finish();
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-14 22:20:45

这里的答案很简单,不要从Activity发送短信,而是从BroadCastReceiver发送短信。我从未见过finish()调用onCreate本身。

尝试从接收器本身调用/发送sendSms。

票数 0
EN

Stack Overflow用户

发布于 2013-04-14 22:19:37

这是显而易见的事情。当你收到任何短信时,你会在Receiver上收到通知,然后你会从SMSMessaging活动中发送新的短信,所以新的短信也会在你的Receiver上通知你,你的SMSMessaging会再次发送新的消息,所以这些事情将永远重复。

在排序中,你需要重新设计你的逻辑。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15999975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档