Java 无用户界面的android短信接收和回复

Java 无用户界面的android短信接收和回复,java,android,Java,Android,我想构建一个android应用程序,它首先接收来自任意号码的消息,然后再接收来自任意号码的消息 接收消息我希望在变量中保留消息字符串和数字,然后回复消息在消息中添加一些额外的字符串到相同的“否”,无需用户界面即可自动执行。 我是android新手,所以请帮助我 只有我有接收消息代码…请给我其余代码的解决方案。 多谢各位 我的brodcost接受器课程 包com.example.broadcastreceiver import android.content.BroadcastReceive

我想构建一个android应用程序,它首先接收来自任意号码的消息,然后再接收来自任意号码的消息 接收消息我希望在变量中保留消息字符串和数字,然后回复消息在消息中添加一些额外的字符串到相同的“否”,无需用户界面即可自动执行。 我是android新手,所以请帮助我

只有我有接收消息代码…请给我其余代码的解决方案。 多谢各位

我的brodcost接受器课程 包com.example.broadcastreceiver

   import android.content.BroadcastReceiver;
   import android.content.Context;
   import android.content.Intent;
   import android.os.Bundle;
   import android.telephony.SmsManager;
   import android.telephony.SmsMessage;
   import android.util.Log;
   import android.widget.Toast;


   public class IncomingSms extends BroadcastReceiver {

// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();

public void onReceive(Context context, Intent intent) {

    // Retrieves a map of extended data from the intent.
    final Bundle bundle = intent.getExtras();

    try {

        if (bundle != null) {

            final Object[] pdusObj = (Object[]) bundle.get("pdus");

            for (int i = 0; i < pdusObj.length; i++) {

    SmsMessage currentMessage =  SmsMessage.createFromPdu((byte[]) pdusObj[i]);
    String phoneNumber = currentMessage.getDisplayOriginatingAddress();

                String senderNum = phoneNumber;
                String message = currentMessage.getDisplayMessageBody();


                System.out.println(phoneNumber);
                System.out.println(currentMessage);

                Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);

                int duration = Toast.LENGTH_LONG;
                Toast toast = Toast.makeText(context, "senderNum: "+ senderNum + ", message: " + message, duration);
                toast.show();

            } // end for loop
          } // bundle is null

    } catch (Exception e) {
        Log.e("SmsReceiver", "Exception smsReceiver" +e);

    }
   }


     }

那么,您现在应该通过广播发送您的信息,您应该:

PendingIntent sentIntent; // can be null
PendingIntent deliveryIntent;  // can be null
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentIntent, deliveryIntent);

您可以考虑将其放入代码> ItnService < /C>中,我不确定SDENTEXTMENT消息执行多长时间,广播不应该进行任何繁重的计算/处理。另外,将此代码放入

IntentService
,将防止android杀死你的应用程序,这一点很重要,因为你希望它在后台工作,android可能创建你的应用程序只是为了让它接收广播,而在onReceive结束后,它可能杀死你的应用程序,这项服务将延长你的应用程序寿命

PendingIntent sentIntent; // can be null
PendingIntent deliveryIntent;  // can be null
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentIntent, deliveryIntent);