2011-04-15 26 views
0

我正在开发一个Android应用程序,该应用程序应该用用户数据标题(UDH)检索SMS。使用UDH的消息对于标准的Android SMS Messenger是不可见的。我使用“06050415810000”UDH进行测试(“06” - 报头长度,“05” - 报头类型,“04” - 报头其余部分的长度,“1581” - 目的端口,“0000” - src端口)。带有三星操作系统的设备已经检索到带有这种标题的消息,并且该消息显示在收件箱文件夹中(但无法打开该消息)。 Android操作系统的设备没有显示(这是正常的),但我的应用程序无法捕捉到隐形的短信。 我有下面的代码赶上短信:在Android设备上用用户数据标题(UDH)检索SMS

public class SmsReceiver extends BroadcastReceiver { 

public Class<?> delegate = null; 

@Override 
public void onReceive(Context context, Intent intent) { 


    Bundle bundle = intent.getExtras(); 
    if (bundle != null) { 
     Object[] pdus = (Object[])bundle.get("pdus"); 
     final SmsMessage[] messages = new SmsMessage[pdus.length]; 
     for (int i = 0; i < pdus.length; i++) { 
      messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
     } 

     AppManager.setSmsMessage(messages[0]); 

     if (delegate != null) { 
      Intent di = new Intent(context, delegate); 
      di.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      di.putExtra("SMS", messages[0].getPdu()); 
      context.startActivity(di); 
     } 

    } 
} 

这是我的清单文件:

<receiver 
     android:name=".services.SmsReceiver"> 
     <intent-filter> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
      <action android:name="android.intent.action.DATA_SMS_RECEIVED"/>     
     </intent-filter> 
    </receiver> 

该应用程序只检索消息而不UDH。

+0

我不知道这是否会帮助你,我也是找的方式向UDH,http://www.androidjavadoc.com/1.0_r1_src/android/电话/ GSM/SmsMessage.PduParser.html – xybrek 2012-02-02 10:29:27

回答

-2

您需要RECEIVE_SMS许可

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
相关问题