Приложение должно иметь возможность послать SMS на определенный номер.
Как может выглядеть реализация такой возможности?
Используя Api смс агрегатора. Get или Post запросом на их сервер:
http://смс.агрегатор/messages/v2/send/?phone=%2B71234567890&text=test
Для отправки Http запроса можно использовать HttpUrlConnector
из пакетов java, либо HttpClient
от Apache, либо любой другой удобной вам реализацией.
Конкретные условия Rest Api смотрите у агрегатора (гугл найдет вам всех, рекламировать не хочу)
Пример с Url java:
URL myUrl = new URL("http://смс.агрегатор/messages/v2/send/?phone=%2B71234567890&text=test");
HttpURLConnection myUrlCon = (HttpURLConnection) myUrl.openConnection();
дальше получаете поток для чтения ответа и читаете:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null){
content.append(line + "\n");
}
И что-то делаете с ответом.
HttpClient от Apache :
String url = "http://смс.агрегатор/messages/v2/send/?phone=%2B71234567890&text=test";
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
Грубо говоря есть 2 способа:
1) Лайт способ - воспользовать интентом, который обработает дефолтный обработчик СМСок установленный на телефоне:
String number = "123456789"; //номер получателя
Intent smsIntent=new Intent(Intent.ACTION_VIEW);
smsIntent.putExtra("sms_body", "Test message");
smsIntent.setType("vnd.android-dir/mms-sms");
startActivity(smsIntent);
Юзер увидит, что будет отсылаться сообщение - будет вызван дефолтный смс обработчик, где юзер должен тапнуть на send
2) Хард способ (как бы незаметно для юзера):
String number = "123456789"; //номер получателя
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, "Test message", null, null);
Требуется пермишен и фича:
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-feature
android:name="android.hardware.telephony"
android:required="true" />
Начиная с API Kitkat (по-моему) там что-то изменилось в пермишенах и так просто послать СМС по второму варианту уже нельзя.
Update
Все таки наврал. Спец. пермишен для API >= KitKat на отсылку смс не требуется.
почитайте здесь
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть интерфейс Animal и 2 класса реализующих этот интерфейс : Dog и Cat
У меня задача написать аннотацию подобную @Value в SpringBootТоесть любое поле аннотированое @Prop("${value}") должно получить значение из properties файла