2012-01-16 14 views
0

나는 현재 안드로이드를 코딩하고 있는데, SMS가 수신되면 앱이 몇 가지 작업을 수행하고 싶다 ... 지금 이상한 부분 ... 나는 에뮬레이터에서 다음 코드를 teste했습니다. 100 % 내 안드로이드 2.3.3에 걸릴 때 GO는 전혀 작동하지 않습니다 SMS로 :SMS 수신 안드로이드

import android.content.BroadcastReceiver; 
import android.content.Context;<br /> 
import android.content.Intent;<br /> 
import android.os.Bundle;<br /> 
import android.telephony.gsm.SmsMessage;<br /> 
import android.widget.Toast; 


public class SMSReceiver extends BroadcastReceiver { 
String lsms; 
/* package */ static final String ACTION = 
     "android.provider.Telephony.SMS_RECEIVED"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //---get the SMS message passed in---   
     Bundle bundle = intent.getExtras();     
     SmsMessage[] msgs = null;   
     String str = "";      
     if (bundle != null)  {   
      //---retrieve the SMS message received---    
      Object[] pdus = (Object[]) bundle.get("pdus");    
      msgs = new SmsMessage[pdus.length];       
      for (int i=0; i<msgs.length; i++){     
       msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);         
       str += "SMS from " + msgs[i].getOriginatingAddress();          
       str += " :";     
       str += msgs[i].getMessageBody().toString();     
       str += "\n";      
       }    
      //---display the new SMS message---    
      Toast.makeText(context, str, Toast.LENGTH_SHORT).show();   
      } 

    } 


} 

\ 그리고 네 ... 나는 AndroidManifest.xml에 할 수있는 권한 필요한 코드를 추가 :

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

의도 및 내용

<receiver android:name=".receiver.SMSReceiver" android:enabled="true"> 
     <intent-filter> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 
+0

나는 비슷한 것을하고있다 !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

답변

0

GO SMS 및 기타 SMS 앱이 SMS 수신 브로드 캐스트를 가로 채고 다른 프로그램으로 들어오는 것을 막음으로써 텍스트를받을 때 알림 만 표시된다는 이야기를 들었습니다. GO SMS를 제거하고 작동하는지 확인해야합니다.

불행히도 문제가 해결 될 수있는 방법이 없습니다. 우선 순위를 가장 높은 우선 순위로 설정했기 때문에 문제가 해결되지 않았기 때문에 방송이 삭제되기 전에 방송을 수신 할 수있는 방법이 없습니다.

+0

다른 방법은 없습니까? 나는 우리가 "content : // sms/inbox"를 통해 접근 할 수있는 다소의 것을 읽었습니다 ... –

+0

죄송합니다. 방송을 수신 할 다른 방법이 없다는 의미였습니다. 당신은 주변에 방법이 있다고 말하고 있습니다. ContentObserver 클래스를 살펴 봐야합니다. 그것을 위해이 사이트에서 빠른 검색을 해보십시오. 몇 가지 좋은 예가 있습니다. 그것은 꽤 간단합니다. –