【发布时间】:2015-07-16 14:25:57
【问题描述】:
我已经编写了以下方法来读取传入的短信文本。当默认 SMS 客户端是本机 SMS 客户端时,此代码在 Android 4.04 中完美运行,但当 SMS 客户端为 Hangout 时,该方法不起作用。
同样的方法在 Android 5 中使用 Hangout 作为 SMS 客户端,问题仅在 Android 4.04 中使用 Hangout 作为 SMS 客户端。如果我遗漏了什么,请告诉我。
static boolean readSMS(Intent intent, int code) {
try {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String message = currentMessage.getDisplayMessageBody();
if (message.contains(String.valueOf(code)))
return true;
}
}
} catch (Exception e) {
return false;
}
return false;
}
从 BroadCastReceiver 中的 java 代码调用该方法。
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
if (readSMS(intent, code)) {
------------------
}
}
BroadCastReceiver 被调用为:
context.registerReceiver(receiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
Manifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
【问题讨论】:
标签: android sms broadcastreceiver android-4.0-ice-cream-sandwich smsmanager