2014-01-15 55 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結束後,可能會殺了你的應用程序,服務將延長你的應用程序的生活。