Intereting Posts
Прокрутка webview горизонтально внутри ViewPager Обрезка видео с помощью «com.android.camera.action.TRIM» (пакет Gallery2) Любой способ поддержать samsung galaxy s4 с использованием совместимых размеров экрана Android Log.v (), Log.d (), Log.i (), Log.w (), Log.e () – Когда использовать их? Android PhoneGap – только цифровая клавиатура Как загрузить сервисы Google Play в эмулятор Android? Android: программно откройте диалоговое окно «Недавние приложения» Android Studio – как изменить путь к SDK Android Как выровнять радиокнопку в центре экрана Странная ошибка в R.java, даже после очистки проекта: «Подчеркивания могут использоваться только с уровнем 1,7 или выше» Способ проверки того, заблокирована ли текущая задача? Как получить ширину текста при использовании нескольких параметров Как открыть личные файлы, сохраненные во внутреннем хранилище, с помощью Intent.ACTION_VIEW? Как сохранить изображение как blob в Sqlite и как его получить? Как отклонить AlertDialog в android

Отправка 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); } } }