2014-01-15 4 views
-1

나는 처음부터 어떤 번호에서 메시지를받은 안드로이드 응용 프로그램을 구축하고 싶습니다. 메시지를 수신합니다. 메시지 문자열과 번호를 변수에 포함시키고 메시지에 몇 가지 추가 문자열을 추가하려고합니다. 사용자 인터페이스없이 자동으로 같은 번호로 메시지에. 나는 안드로이드에 새로운 것이므로 제발 도와주세요.안드로이드 SMS 수신 및 사용자 인터페이스없이 회신

메시지 코드를받는 중 .... plese는 코드 나머지 부분에 대한 해결책을 제공합니다. 고마워요

내 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); 

    } 
    } 


    } 

내 주요 활동

 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에 넣으면 안드로이드가 앱을 죽이는 것을 막을 수 있습니다.이 기능은 백그라운드에서 작동하기를 원하고, 브로드 캐스트를 수신하기 위해 앱을 만들 수 있기 때문에 중요합니다. 그리고 onReceive가 끝나면 앱, 서비스 앱 수명을 연장시켜줍니다.