Intereting Posts
Android Room: как моделировать отношения? Всплывающее окно Android AutoCompleteTextView, перемещающееся после отображения InstantiateItem в PagerAdapter и AddView в замешательстве ViewPager Как рисовать бесшовные кривые, используя графику Android? Использование HttpClient и HttpPost в Android с параметрами post Ограничить длину текста EditText в Android Как включить зависимости в библиотеку .aar? PhoneGap: есть ли способ, чтобы клавиатура не изменяла размер представления? Пример утечки памяти для Android из Google I / O Ошибка ОС Android с некоторыми устройствами, на которых работает Jelly Bean / 4.2.1 – TextView.setError (ошибка CharSequence) Отсутствует значок Почему этот CSS не работает для Chrome на Android, но работает везде? Как я могу разобрать точки и нарисовать маршрут на карте Google в Android? Есть ли код для Snackbars в Android L или мы ожидаем, что они сами их реализуем? Android-студия автоматически откроет представление документации Сохраненное растровое изображение в android составляет 3 байта при чтении

Отправка SMS программно без открытия сообщения

До сих пор я использую следующий код для отправки SMS на другой телефон через мое приложение.

Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "sms:" + srcNumber)); intent.putExtra( "sms_body", message ); startActivity(intent); 

Однако это открывает собственное приложение для обмена сообщениями, тем самым помещая активность моего приложения в фоновом режиме. Возможно ли отправить SMS непосредственно без открытия приложения для обмена сообщениями? Если да, то как?

Solutions Collecting From Web of "Отправка SMS программно без открытия сообщения"

Вы можете отправить сообщение из своего приложения:

 public void sendSMS(String phoneNo, String msg) { try { SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNo, null, msg, null, null); Toast.makeText(getApplicationContext(), "Message Sent", Toast.LENGTH_LONG).show(); } catch (Exception ex) { Toast.makeText(getApplicationContext(),ex.getMessage().toString(), Toast.LENGTH_LONG).show(); ex.printStackTrace(); } } 

Также вам нужно предоставить разрешение SEND_SMS в AndroidManifest.xml для отправки сообщения

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

 public void sendLongSMS() { String phoneNumber = "0123456789"; String message = "Hello World! Now we are going to demonstrate " + "how to send a message with more than 160 characters from your Android application."; SmsManager smsManager = SmsManager.getDefault(); ArrayList<String> parts = smsManager.divideMessage(message); smsManager.sendMultipartTextMessage(phoneNumber, null, parts, null, null); } 

И не забудьте добавить

 <uses-permission android:name="android.permission.SEND_SMS"/> 
 SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNo, null, sms, null, null); 

Да, нашел ответ на свой вопрос 🙂

Для этого используйте следующий код:

  SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(srcNumber, null, message, null, null); 

Это требует, чтобы в манифесте android manifest xml было объявлено следующее разрешение.

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

Отправка sms с запросом разрешения:

Добавить в манифест:

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

Добавить функцию Java:

 void sendSmsMsgFnc(String mblNumVar, String smsMsgVar) { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED) { try { SmsManager smsMgrVar = SmsManager.getDefault(); smsMgrVar.sendTextMessage(mblNumVar, null, smsMsgVar, null, null); Toast.makeText(getApplicationContext(), "Message Sent", Toast.LENGTH_LONG).show(); } catch (Exception ErrVar) { Toast.makeText(getApplicationContext(),ErrVar.getMessage().toString(), Toast.LENGTH_LONG).show(); ErrVar.printStackTrace(); } } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{Manifest.permission.SEND_SMS}, 10); } } }