2014-01-15 123 views
-1

我想建立的是第一次收到的消息从任何数量和 后收到消息,我想保持在变量消息字符串和号码,然后回复消息中增加一些额外的字符串中的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("") 

} 
    } 

回答

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的工作可能只是创建您的应用程序,使其接收广播,这是很重要的,的onReceive结束后,可能会杀了你的应用程序,服务将延长你的应用程序的生活。