2012-05-06 8 views
3

특정 포트에서 SMS를 수신하는 앱을 구현하고 싶습니다.안드로이드 SMS 포트 정보

매니페스트 코드 : 아래

<receiver android:name=".BinarySMSReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.DATA_SMS_RECEIVED"/> 
     <data android:port="8091"/> 
     <data android:scheme="sms"/> 
    </intent-filter> 
</receiver> 

그리고 수신기 클래스 코드.

public class BinarySMSReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Bundle bundle = intent.getExtras();   
     SmsMessage[] msgs = null; 

     if(null != bundle) 
     { 
      String info = "Binary SMS from "; 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      msgs = new SmsMessage[pdus.length]; 
      byte[] data = null; 

      for (int i=0; i<msgs.length; i++){ 
       msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
       info += msgs[i].getOriginatingAddress();      
       info += "\n*****BINARY MESSAGE*****\n"; 

       data = msgs[i].getUserData(); 

       for(int index=0; index<data.length; ++index) 
       { 
        info += Character.toString((char)data[index]); 
       } 
      } 

      Toast.makeText(context, info, Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

나는이 (8091) 포트 또는하지에있는 모든 SMS를 얻고있다. 포트 관련 메시지 만 수신하려고합니다.

답변

2

I했습니다 비슷한 문제가, 당신의 'onReceive'코드의 시작에 체크 조건 다음을 추가합니다 사람들을 위해

String dataStr = intent.getDataString(); 
if (dataStr.indexOf(":8888") == -1) { 
    return; 
} 
10

응용 프로그램이 데이터를 수신 SMS를 단지 다른 포트로 이동하지 왜 아직도 궁금 문제는 Manifest 코드에 있습니다. 게시 된 많은 솔루션을 보았고 대부분은 실제로 잘못되었습니다.

매니페스트가 있어야한다 :

<receiver 
    android:name = ".SmsReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.DATA_SMS_RECEIVED" /> 
     <data 
      android:scheme="sms" 
      android:host="*" 
      android:port="8095" /> 
     </intent-filter> 
</receiver> 

이 계획, 호스트 및 포트 속성이없는 별도의 "데이터"요소에, 의도 필터의 한 "데이터"요소에 정의해야합니다. 또한

없는 것을이 link로부터,
한다고 "데이터 테스트"섹션 "호스트 및 포트 함께 URI 권한을 구성한다]. 호스트가 지정되지 않은 경우, 포트는 무시"
앱이 특정 포트에 대해서만 데이터 SMS를 수신하게하려면 호스트를 지정해야합니다.

:

은 "호스트"요소는 * (별표)이 사람을 (도움이

희망 모든 호스트/전화 번호에서 데이터 SMS를 승인하도록 지정하는 것입니다