2012-09-18 5 views
0

받은 SMS_RECEIVED 브로드 캐스트를 다시 보내고 싶습니다. http://blog.dev001.net/post/14085892020/android-generate-incoming-sms-from-within-your-app과 비유하여합니다 : 여기 예를 발견했습니다SMS_RECEIVED 브로드 캐스트를 다시 보낼 수 있습니까?

boolean received=false; 

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { 
      if(!received) { 

       received=true; 

       Bundle pudsBundle = intent.getExtras(); 
       Object[] pdus = (Object[]) pudsBundle.get("pdus"); 
       SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]); 

       abortBroadcast(); 

       if(/*my condition here*/) { 
        Intent update = new Intent(); 
        update.setClassName("com.android.mms", "com.android.mms.transaction.SmsReceiverService"); 
        update.setAction("android.provider.Telephony.SMS_RECEIVED"); 
        update.putExtra("pdus" , new Object[] { pdus }); 
        startService(update); 
       } 

      } 
     } 
    } 
}; 

그러나이 코드 충돌 com.android.mms은 (내가 "I/ActivityManager (71) 참조 : 프로세스 com.android.mms (PID (904)) 사망했다 "로그 캣에서)이 함께 :.

threadid=8: thread exiting with uncaught exception (group=0x4001d800) 
FATAL EXCEPTION: SmsReceiverService 
java.lang.ClassCastException: [Ljava.lang.Object; 
    at android.provider.Telephony$Sms$Intents.getMessagesFromIntent(Telephony.java:617) 
    at com.android.mms.transaction.SmsReceiverService.handleSmsReceived(SmsReceiverService.java:299) 
    at com.android.mms.transaction.SmsReceiverService.access$100(SmsReceiverService.java:67) 
    at com.android.mms.transaction.SmsReceiverService$ServiceHandler.handleMessage(SmsReceiverService.java:172) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.os.HandlerThread.run(HandlerThread.java:60) 

어떻게 문제를 해결하려면?

답변

1

동일한 데이터 (동일한 수신 SMS)를 사용하려는 경우 동일한 의도를 다시 사용하는 것이 좋으며 자신 만의 빌드를 위해 트레이를 사용하지 않는 것이 좋습니다. intent.putExtras (번들 엑스트라) 만 사용하십시오. "update.putExtra ("pdus ", 새 Object [] {pdus})를" "update.putExtra (pudsBundle)"와 함께. 그것을 시도하고 그것이 작동하는지, 내가 번식 할 시간이 없다면 알려주십시오.

+0

정말 고맙습니다. 감사합니다. – BArtWell

관련 문제