Не удалось найти разрешение SMS в студии Android

Я не могу найти действие android.provider.Telephony в студии Android для создания приложения, которое может получать SMS. Почти в каждой статье, в том числе для разработчиков Android, говорится, что я должен включить действие фильтра намерений android.provider.Telephony.SMS_RECEIVE в файл манифеста. Но я понял, что это действие больше не поддерживается студией Android. Помогите мне, пожалуйста


person PADAMNABH ELECTRONICS    schedule 08.09.2017    source источник
comment
Отредактирован вопрос, добавлены теги и улучшено форматирование.   -  person Akshay    schedule 08.09.2017


Ответы (2)


Вам нужно дать разрешение на файл манифеста,

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

Затем вы должны включить фильтр намерений в свой манифест. Вы должны были взять класс, который расширяет BroadcastReceiver, напишите имя этого класса в качестве имени получателя. В моем случае это SMSReceiver.

    <receiver android:name=".SMSReceivcer"
        android:exported="true"
        android:permission="android.permission.BROADCAST_SMS">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        </intent-filter>
    </receiver>
person Hector Morris    schedule 08.09.2017
comment
Я написал точно такой же код, но студия Android не может распознать тег действия android.provider.Telephony.SMS_RECEIVED. Это проблема - person PADAMNABH ELECTRONICS; 08.09.2017
comment
Вы должны использовать уровень API выше 19, попробуйте сделать его 21 или выше. - person Hector Morris; 08.09.2017

Пожалуйста, попробуйте это

// Add this in manifest
      <uses-permission android:name="android.permission.RECEIVE_SMS" />
      <uses-permission android:name="android.permission.READ_SMS" /> 

     <receiver android:name=".SMSReciver">
                <intent-filter>
                    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                </intent-filter>
     </receiver>

//Create new class
    public class SMSReciver extends BroadcastReceiver
    {
        private Context mContext;

        @Override
        public void onReceive(Context context, Intent intent)
        {
            mContext = context;
            Bundle myBundle = intent.getExtras();
            SmsMessage[] messages = null;
            String strMessage = "";

            String lMessageBody = "", lMessageFrom = "";

            if (myBundle != null)
            {
                Object[] pdus = (Object[]) myBundle.get("pdus");
                messages = new SmsMessage[pdus.length];

                for (int i = 0; i < messages.length; i++)
                {
                    messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);

                    lMessageFrom = messages[i].getOriginatingAddress();
                    lMessageBody = messages[i].getMessageBody();
                }
            }
        }
    }
person Manoj Bhadane    schedule 08.09.2017
comment
Я написал точно такой же код, но студия Android не может распознать тег действия android.provider.Telephony.SMS_RECEIVED. Это проблема - person PADAMNABH ELECTRONICS; 08.09.2017
comment
Я думаю, что тег действия удален из последних API. Если это так, то каков альтернативный вариант - person PADAMNABH ELECTRONICS; 08.09.2017