Я использовал этот код для получения смс на реальном устройстве Android 4.2, и он работал нормально. Теперь я узнал о новом модуле разрешений, поэтому этот код в Android 7 Nougat не работает для меня.
public class sms extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null) {
Object[] smsExtra = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[smsExtra.length];
for (int i = 0; i < msgs.length; i++) {
SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
String body = sms.getMessageBody().toString();
String sender = sms.getOriginatingAddress().toString();
Toast.makeText(context, "From :"+sender+"\n"+"body:"+body, Toast.LENGTH_LONG).show();
}
}
}
}
Я нашел это о зефире, что требуется разрешение во время выполнения, но я не получить его, как и где добавить его в моем коде, чтобы он работал в Nougat и ниже apis.
// в манифесте.xml
<uses-permission android:name="android.permission.RECEIVE_SMS" />
But i did not get it how and where to add it
- то надо как-то достать. НайдитеAndroid 6 runtime permissions
, и вы найдете сотни руководств о том, как это сделать. - person Vladyslav Matviienko   schedule 09.06.2017