android短信接收和回复没有用户界面

时间:2014-01-15 14:11:52

标签: java android

我想构建一个Android应用程序,它首先收到来自任何号码的消息 接收消息我想在变量中保留消息字符串和数字,然后回复消息在消息中添加一些额外的字符串到没有用户界面的自动消息。 我是android新手所以请帮助我。

只有我收到了消息代码....请给我解决其余的代码。 谢谢

我的brodcost reciver课程        package 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);

    }
   }


     }

我的主要活动

     package com.example.broadcastreceiver;

    import com.androidexample.broadcastreceiver.R;

    import android.os.Bundle;
    import android.app.Activity;


   public class BroadcastNewSms extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.androidexample_broadcast_newsms);
    Ssystem.out.println("")

}
    }

1 个答案:

答案 0 :(得分:0)

好吧,你现在应该从广播中发送你的信息,你应该:

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

http://developer.android.com/reference/android/telephony/SmsManager.html

您可能会考虑将其放入IntentService,我不确定sendTextMessage的执行需要多长时间,并且广播不应该进行任何繁重的计算/处理。将此代码放入IntentService,也会阻止android杀死你的应用程序,这很重要,因为你希望这在后台工作,android可能会创建你的应用程序只是为了让它接收广播,并且在onReceive结束后它可能会杀死您的应用程序,服务将延长您的应用程序寿命。