Я написал ниже метод для чтения входящего sms-текста. Этот код отлично работает в Android 4.04, когда клиент SMS по умолчанию является родным клиентом SMS, но когда клиент SMS является Hangout, метод не работает.Чтение SMS не работает
Тот же метод работает в Android 5 с Hangouts в качестве клиента SMS, проблема только в Android 4.04 с Hangouts в качестве клиента 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;
}
Метод вызывается из кода Java в BroadCastReceiver.
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" />
Приоритет может быть установлен намного выше этого значения, вплоть до максимальных значений Integer в Java. Кроме того, вы можете просто посмотреть, какой приоритет Hangouts установлен для их получателя - это будет в их манифесте. –
@ TheoLassonder Есть ли способ проверить манифест Hangouts? Я думал, что нет способа сделать это – Psypher
@ ɥʇᴉɾuɐɹ Я проверил его, он зашифрован. Но попробуйте добавить строку «priority» в ваш манифест и проверить ее с разными значениями, вам нечего терять. – TDG