Я не могу найти действие android.provider.Telephony
в студии Android для создания приложения, которое может получать SMS
. Почти в каждой статье, в том числе для разработчиков Android, говорится, что я должен включить действие фильтра намерений android.provider.Telephony.SMS_RECEIVE
в файл манифеста. Но я понял, что это действие больше не поддерживается студией Android. Помогите мне, пожалуйста
Не удалось найти разрешение SMS в студии Android
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
Я написал точно такой же код, но студия Android не может распознать тег действия android.provider.Telephony.SMS_RECEIVED. Это проблема
- person PADAMNABH ELECTRONICS; 08.09.2017
Вы должны использовать уровень 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
Я написал точно такой же код, но студия Android не может распознать тег действия android.provider.Telephony.SMS_RECEIVED. Это проблема
- person PADAMNABH ELECTRONICS; 08.09.2017
Я думаю, что тег действия удален из последних API. Если это так, то каков альтернативный вариант
- person PADAMNABH ELECTRONICS; 08.09.2017