Я хочу получить информацию из полученного текстового сообщения. Информация, например, номер телефона отправителя текста и т. Д. Я пытаюсь сделать это с помощью приведенного ниже кода. У меня есть разрешения в манифесте.Получить информацию о текстовом сообщении, полученном в android 6.0.1 API-интерфейс Marshmallow: 23
public void onReceive(Context context, Intent intent)
{
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "n";
}
//---display the new SMS message---
Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
}
}
Это работает. Но не на Marshmallow 6.0.1 API: 23. Кроме того, SmsMessage, createFromPdu и getMessageBody все они устарели. Я не могу найти способ сделать это в Зефире. Пожалуйста, дайте мне решение.
О, извините. Я забыл об этом. Я не уверен, но, возможно, вам нужно проверить разрешение программно, находится ли оно в манифесте. Новые версии для Android требуют этого. Например, я попытался написать внешнее хранилище. У меня было разрешение в манифесте, но это было исключение при написании внешнего хранилища. Затем я запросил разрешение программно, и проблема была решена. Возможно, он аналогичен для смс. У меня Android 5.0. Я не могу проверить это сейчас. –