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