2012-10-10 2 views
2

한 번에 여러 개의 SMS를 보내는 SMS 앱을 개발하고 싶습니다. ID를 SMS로 설정하려고합니다. SMS SENT 보고서에서이 ID를 가져 오려고합니다. 그래서, 나는 특별한 메시지가 보내 졌음을 알게 될 것이다.수신자가 SMS 수신 거부 보고서를 수신하는 동안 브로드 캐스트 수신자에게 코드를 전달하는 방법

나는 이미 브로드 캐스트 수신기를 추가했습니다. SMS SENT 보고서도 수신 중입니다.

예 : 10 개의 SMS를 보내고 8 개의 SMS SENT 보고서를 받았습니다. 2 개의 메시지가 전송되지 않아서 다시 보낼 수 있는지 어떻게 알 수 있습니까?

+0

그럼 당신의 아이디어는 좋아 보인다. ID 추가를 시도 했습니까? – keyser

답변

0

보내는 모든 SMS (또는 부분 SMS)에 대해 PendingIntent를 제공합니다. 이 PendingIntent에는 SMS (또는 부분)가 성공적으로 보내지거나받을 때 받게 될 Intent를 넣었습니다. 이 인 텐트에서는 추가 정보를 사용하여 추가 정보를 입력 할 수 있습니다. 메시지를 보낼 때, 예를 들어, 코드는 ... 다음과 같을 수

String receiverCodeForThisMessage = "STRING_CODE_FOR_MY_SMS_OUTCOME_RECEIVER"; 
int uniqueCodeForThisPartOfThisSMS = 100*numberSMSsentSoFar+PartNumberOfThisSMSpart; 

Intent intent = new Intent(receiverCodeForThisMessage); 
intent.putExtra("TagIdentifyIngPieceOfInformationOne", piece1); 
intent.putExtra("TagIdentifyIngPieceOfInformationTwo", piece2); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uniqueCodeForThisPartOfThisSMS, intent, 0); 

SmsManager sms = SmsManager.getDefault(); 
sms.sendTextMessage("phonenumber", "Fred Bloggs", "Hello!", pendingIntent, null); 

하지만 그 전에, 당신은 결과와 사용자가 설정 의도를 얻을 것이다 수신기를 등록합니다

; 그 의도에서 당신은 정보 조각을 추출합니다 :

registerReceiver(new BroadcastReceiver(){ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Get information about this message 
     int piece1 = intent.getIntExtra("TagIdentifyIngPieceOfInformationOne", -1); 
     int piece2 = intent.getIntExtra("TagIdentifyIngPieceOfInformationTwo", -1); 

     if (getResultCode() == Activity.RESULT_OK) { 
      // success code 
     } 
     else { 
      // failure code 
     } 
}, new IntentFilter(receiverCodeForThisMessage)); 
+0

감사합니다 닐, 내가 보낸 보고서에서 ID를 얻고 있지만 문제가 3 개 있습니다. (1) onReceive() 메소드에서 인 텐트를 검사 할 때 모든 메시지에 대해 동일한 ID를 제공합니다. (2) 주어진 키에 의해 id를 얻으면 -1을 반환합니다. (3) onReceiver가 두 번 호출했습니다. –

+0

역순으로 ... (2) - 두 개의 SMS 메시지 또는 두 부분으로 된 메시지를 보내는 경우 onReceiver가 두 번 호출됩니다. (2) 키가 정확하다는 것을 확인 했습니까? 잘못 입력하기 쉽습니다. (1) 이것은 보류중인 의도 (긴 이야기)가 실제로 하나만 남았을 수도 있지만, 보류중인 인 텐트 라인의 첫 번째 "0"이 보내는 각 문자 (부분)에 고유 한 정수이면 더 효과적 일 수 있습니다. . –

관련 문제