我正在开发一个应该使用用户数据标头(UDH)检索SMS的Android应用程序。带有UDH的邮件对于标准的Android SMS Messenger来说是不可见的。我使用“06050415810000”UDH进行测试(“06” - 标题长度,“05” - 标题类型,“04” - 标题其余部分的长度,“1581” - 目标端口,“0000” - src端口)。使用Samsung OS的设备已检索到带有此类标题的邮件,并且邮件显示在收件箱文件夹中(但无法打开邮件)。使用Android操作系统的设备没有显示它(这是正常的),但我的应用程序无法捕获隐形短信。 我有以下代码来捕捉短信:
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 :(得分:-2)
您需要RECEIVE_SMS
权限
<uses-permission android:name="android.permission.RECEIVE_SMS" />