Android 如何在onreceive方法和扩展广播类中发送sms

Android 如何在onreceive方法和扩展广播类中发送sms,android,broadcastreceiver,Android,Broadcastreceiver,我有两个操作发生在onreceive方法上,我需要类来扩展broadcastreceiver,我无法发送sms,因为它必须扩展活动,我想让sms自动重播,所以它必须在onreceive方法上,并且我获取消息并将其转换为语音,这两个操作中的每一个都在一个屏幕上切换Button我已经执行了转换操作,我可以注册和注销接收器,但它无法发送自动回复短信。如果您回答我,以下代码将自动发送短信 广播接收机类 public class SMSReceiver extends BroadcastReceiver

我有两个操作发生在onreceive方法上,我需要类来扩展broadcastreceiver,我无法发送sms,因为它必须扩展活动,我想让sms自动重播,所以它必须在onreceive方法上,并且我获取消息并将其转换为语音,这两个操作中的每一个都在一个屏幕上切换Button我已经执行了转换操作,我可以注册和注销接收器,但它无法发送自动回复短信。如果您回答我,以下代码将自动发送短信 广播接收机类

public class SMSReceiver extends BroadcastReceiver {


private static final String msg="talk u later";


/**
 * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
 */
@Override
public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();

    Object messages[] = (Object[]) bundle.get("pdus");
    SmsMessage smsMessage[] = new SmsMessage[messages.length];
    for (int n = 0; n < messages.length; n++) {
        smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
    }
    String pno=smsMessage[0].getOriginatingAddress();

    // show first message
    Toast toast = Toast.makeText(context, "Received SMS: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);

    toast.show();
    sendSms(pno,msg);
}

private void sendSms(String phonenumber,String message)
 {
   SmsManager manager = SmsManager.getDefault();


   manager.sendTextMessage(phonenumber, null, message, null, null);

   }
公共类SMSReceiver扩展了BroadcastReceiver{
私有静态最终字符串msg=“稍后再谈”;
/**
*@see android.content.BroadcastReceiver#onReceive(android.content.Context,android.content.Intent)
*/
@凌驾
公共void onReceive(上下文、意图){
Bundle=intent.getExtras();
对象消息[]=(对象[])bundle.get(“PDU”);
SmsMessage SmsMessage[]=新SmsMessage[messages.length];
对于(int n=0;n
}

接收者活动

公共类接收器扩展活动{
/**在首次创建活动时调用*/
私有整数状态=-1;
SMSReceiver receiver=null;
IntentFilter=null;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
逻辑的();
}
//====================================================
私有无效变更接收者状态(内部状态){
试一试{
如果(接收器==null)
接收器=新的SMSReceiver();
if(filter==null){
filter=新的IntentFilter();
filter.addAction(“android.provider.Telephony.SMS_RECEIVED”);
}
如果(状态)
 public class receiver extends Activity {
/** Called when the activity is first created. */

private int status=-1;
SMSReceiver receiver=null;
IntentFilter filter=null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    startLogic();
}


//====================================================
private void changeReceiverStatus(int status){

    try{

        if(receiver==null)
            receiver=new SMSReceiver();

        if(filter==null){

            filter = new IntentFilter();
            filter.addAction("android.provider.Telephony.SMS_RECEIVED");
        }

        if(status<0)
            this.unregisterReceiver(receiver);
        else
            this.registerReceiver(receiver, filter);

    }catch(Exception e){e.printStackTrace();}
}

//====================================================
private void startLogic(){

    try{

        final Handler handler=new Handler(){
            public void handleMessage(Message msg){

                try{

                    int status=msg.getData().getInt("status");

                    if(status<0)
                        Toast.makeText(receiver.this, "Unregistering receiver for 20 sec", Toast.LENGTH_SHORT).show();
                    else
                        Toast.makeText(receiver.this, "Registering receiver for 20sec", Toast.LENGTH_SHORT).show();

                }catch(Exception e){e.printStackTrace();}
            }};

        new Thread(){
            public void run(){

                try{

                    while(true){

                        Bundle b=new Bundle();
                        b.putInt("status", status);
                        Message msg=new Message();
                        msg.setData(b);

                        handler.sendMessage(msg);

                        changeReceiverStatus(status);
                        status=status*-1;

                        Thread.sleep(20000);
                    }

                }catch(Exception e){e.printStackTrace();}

            }}.start();

    }catch(Exception e){e.printStackTrace();}
}