Отправить SMS в android

Я хочу отправить sms.

Какова цель отправки SMS … или любого другого кода? Я хочу показать comps sms view с моим предопределенным текстом, проходящим в поле сообщения.

Есть ли помощь для этого?

Вы можете использовать следующий код:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber))); 

Убедитесь, что phoneNumber телефона phoneNumber на phoneNumber телефона, на который вы хотите отправить сообщение,

Вы можете добавить сообщение на СМС с помощью (из комментариев):

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

Это сработало для меня.

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btnSendSMS = (Button) findViewById(R.id.btnSendSMS); btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { sendSMS("5556", "Hi You got a message!"); /*here i can send message to emulator 5556. In Real device *you can change number*/ } }); } //Sends an SMS message to another device private void sendSMS(String phoneNumber, String message) { SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, null, null); } 

Вы можете добавить эту строку в AndroidManifest.xml

  

Взгляните на это

Это может быть полезно для вас.

Попробуйте приведенный ниже код, а затем вызовите sendSMS("99999999999", "message"); для отправки sms в нужном количестве.

 //---sends an SMS message to another device--- @SuppressWarnings("deprecation") private void sendSMS(String phoneNumber, String message) { Log.v("phoneNumber",phoneNumber); Log.v("MEssage",message); PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, **DummyClasshere.class**), 0); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, pi, null); } 

В файл AndroidManifest.xml следующее разрешение.

  

Надеюсь, это поможет.

Обновление От комментария: DummyClasshere.class – это действие без какого-либо процесса или classа, в котором вам нужно перемещаться.

Вы можете использовать Object.class вместо DummyClasshere.class.

Это определенно будет работать. В этом случае отправьте сообщение без каких-либо намерений.

 SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage("Phone Number", null, "Message", null, null); 

Этот код используется для отправки сообщения в фоновом режиме (не отображается композитор сообщений) , он также может работать внутри приемника Broadcast . Если вы хотите отправить сообщение из широковещательного приемника.

   

В Android у нас есть class SmsManager, который управляет операциями SMS, такими как отправка данных, текстовых сообщений и сообщений pdu. Получите этот объект, вызвав статический метод SmsManager.getDefault ().

SmsManager Javadoc

Проверьте следующую ссылку, чтобы получить образец кода для отправки SMS:

статья о отправке и получении SMS-сообщений в Android

Надеюсь, этот код поможет вам 🙂

 public class MainActivity extends Activity { private int mMessageSentParts; private int mMessageSentTotalParts; private int mMessageSentCount; String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button)findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String phoneNumber = "0000000000"; String message = "Hello World!"; sendSMS(phoneNumber,message); } }); } public void sendSMS(String phoneNumber,String message) { SmsManager smsManager = SmsManager.getDefault(); String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; SmsManager sms = SmsManager.getDefault(); ArrayList parts = sms.divideMessage(message); int messageCount = parts.size(); Log.i("Message Count", "Message Count: " + messageCount); ArrayList deliveryIntents = new ArrayList(); ArrayList sentIntents = new ArrayList(); PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); for (int j = 0; j < messageCount; j++) { sentIntents.add(sentPI); deliveryIntents.add(deliveredPI); } // ---when the SMS has been sent--- registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS sent", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(SENT)); // ---when the SMS has been delivered--- registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(DELIVERED)); smsManager.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); /* sms.sendMultipartTextMessage(phoneNumber, null, parts, sentIntents, deliveryIntents); */ } } 

Я добавляю свой метод SMS, если он может помочь кому-то. Будьте осторожны с smsManager.sendTextMessage, если текст слишком длинный, сообщение не исчезает. Вы должны соблюдать максимальную длину в зависимости от кодирования. Более подробная информация здесь. SMS Manager отправляет сообщение mutlipart, если количество символов меньше 160 символов.

// ИСПОЛЬЗОВАТЬ EveryWhere

 SMSUtils.sendSMS(context, phoneNumber, message); 

// Manifest

          

//ЯВА

 public class SMSUtils extends BroadcastReceiver { public static final String SENT_SMS_ACTION_NAME = "SMS_SENT"; public static final String DELIVERED_SMS_ACTION_NAME = "SMS_DELIVERED"; @Override public void onReceive(Context context, Intent intent) { //Detect l'envoie de sms if (intent.getAction().equals(SENT_SMS_ACTION_NAME)) { switch (getResultCode()) { case Activity.RESULT_OK: // Sms sent Toast.makeText(context, context.getString(R.string.sms_send), Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: // generic failure Toast.makeText(context, context.getString(R.string.sms_not_send), Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: // No service Toast.makeText(context, context.getString(R.string.sms_not_send_no_service), Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: // null pdu Toast.makeText(context, context.getString(R.string.sms_not_send), Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: //Radio off Toast.makeText(context, context.getString(R.string.sms_not_send_no_radio), Toast.LENGTH_LONG).show(); break; } } //detect la reception d'un sms else if (intent.getAction().equals(DELIVERED_SMS_ACTION_NAME)) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(context, context.getString(R.string.sms_receive), Toast.LENGTH_LONG).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(context, context.getString(R.string.sms_not_receive), Toast.LENGTH_LONG).show(); break; } } } /** * Test if device can send SMS * @param context * @return */ public static boolean canSendSMS(Context context) { return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY); } public static void sendSMS(final Context context, String phoneNumber, String message) { if (!canSendSMS(context)) { Toast.makeText(context, context.getString(R.string.cannot_send_sms), Toast.LENGTH_LONG).show(); return; } PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent(SENT_SMS_ACTION_NAME), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED_SMS_ACTION_NAME), 0); final SMSUtils smsUtils = new SMSUtils(); //register for sending and delivery context.registerReceiver(smsUtils, new IntentFilter(SMSUtils.SENT_SMS_ACTION_NAME)); context.registerReceiver(smsUtils, new IntentFilter(DELIVERED_SMS_ACTION_NAME)); SmsManager sms = SmsManager.getDefault(); ArrayList parts = sms.divideMessage(message); ArrayList sendList = new ArrayList<>(); sendList.add(sentPI); ArrayList deliverList = new ArrayList<>(); deliverList.add(deliveredPI); sms.sendMultipartTextMessage(phoneNumber, null, parts, sendList, deliverList); //we unsubscribed in 10 seconds new Handler().postDelayed(new Runnable() { @Override public void run() { context.unregisterReceiver(smsUtils); } }, 10000); } } 
 String phoneNumber = "0123456789"; String message = "Hello World!"; SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNumber, null, message, null, null); 

Включите следующие разрешения в файл AndroidManifest.xml.

  

Некоторые из объяснений, приведенных выше, предназначены только для размещения SMS в состоянии «готов к запуску». как сказал Senthil Mg, вы можете использовать диспетчер sms для отправки sms напрямую, но SMSManager был перемещен в android.telephony.SmsManager

Я знаю, что это не так много информации, но однажды это может кому-то помочь.

Надеюсь, это поможет вам …

Имя файла = MainActivity.java

 import android.os.Bundle; import android.app.Activity; import android.telephony.SmsManager; import android.view.Menu; import android.view.inputmethod.InputMethodManager; import android.widget.*; import android.view.View.OnClickListener; import android.view.*; public class MainActivity extends Activity implements OnClickListener{ Button click; EditText txt; TextView txtvw; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); click = (Button)findViewById(R.id.button); txt = (EditText)findViewById(R.id.editText); txtvw = (TextView)findViewById(R.id.textView1); click.setOnClickListener(this); } @Override public void onClick(View v){ txt.setText(""); v = this.getCurrentFocus(); try{ SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage("8017891398",null,"Sent from Android",null,null); } catch(Exception e){ txtvw.setText("Message not sent!"); } if(v != null){ InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(),0); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

добавьте эту строку в AndroidManifest.xml

  

введите описание изображения здесь

Это позволяет отправлять текстовое сообщение через существующее приложение. phoneNumber – это строка. Если вы не хотите указывать номер телефона, используйте пустую строку «».

 Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", phoneNumber, null)); sendIntent.putExtra("sms_body", "text message"); startActivity(sendIntent); 

Отправьте SMS от KitKat и выше: – добавьте это разрешение в свой AndroidManifest.xml

  

Вам также необходимо будет реализовать разрешение времени выполнения для Marshmallow и Above Version.

AndroidManifest.xml

               

Код, который будет приведен ниже: –

activity_conversation_list.xml

    

ConversationListActivity.java

 public class ConversationListActivity extends FragmentActivity { /** * Whether or not the activity is in two-pane mode, ie running on a tablet * device. */ private int PERMISSIONS_REQUEST_RECEIVE_SMS = 130; private Button btn_send_sms; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_conversation_list); btn_send_sms = (Button) findViewById(R.id.btn_send_msg); btn_send_sms.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int hasSendSMSPermission = 0; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { hasSendSMSPermission = checkSelfPermission(Manifest.permission.SEND_SMS); if (hasSendSMSPermission != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.SEND_SMS}, PERMISSIONS_REQUEST_RECEIVE_SMS); } else if (hasSendSMSPermission == PackageManager.PERMISSION_GRANTED) { Intent intent = new Intent(ConversationListActivity.this, ComposeSMSActivity.class); startActivity(intent); } }else{ Intent intent = new Intent(ConversationListActivity.this, ComposeSMSActivity.class); startActivity(intent); } } }); } } 

Это код для sms-макета и для отправки SMS-сообщений:

activity_compose_sms.xml

    

fragment_compose_sms.xml

                     

ComposeSMSActivity.java

 public class ComposeSMSActivity extends Activity { Activity mActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_compose_sms); mActivity = this; if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } getActionBar().setDisplayHomeAsUpEnabled(true); } public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View rootView = inflater.inflate(R.layout.fragment_compose_sms, container, false); rootView.findViewById(R.id.composeButtonCancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { NavUtils.navigateUpTo(getActivity(), new Intent(getActivity(), ConversationListActivity.class)); } }); rootView.findViewById(R.id.composeButtonSend).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String recipient = ((TextView) rootView.findViewById(R.id.composeEditTextTo)).getText().toString(); String message = ((TextView) rootView.findViewById(R.id.composeEditTextMessage)).getText().toString(); SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(recipient, "ME", message, null, null); } }); return rootView; } } } 

Вот и все.

Вы можете использовать это, чтобы отправить sms на любой номер.
Используйте это в XML

  

Используйте это в classе активности

  public void sendsms(View view) { String phoneNumber = "+880xxxxxxxxxx"; String message = "Welcome to sms"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber)); intent.putExtra("sms_body", message); startActivity(intent); } 

Необходимо разрешение SEND_SMS.

  

Единственное, что сработало для меня:

 Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phone_number)); sendIntent.putExtra("sms_body", message); startActivity(sendIntent); 
  • Программные SMS
  • Как отправлять SMS-сообщения с моего компьютера через Android-телефон?
  • Читать все SMS от конкретного отправителя
  • Отправляйте SMS до тех пор,
  • Как установить мое приложение для мобильных телефонов в Android Kitkat?
  • Как отправить несколько sms на один номер
  • Как использовать поставщика контента SMS? Где документы?
  • Синхронизировать Outlook 2007 с Календарем Google, используя настройку уведомлений по умолчанию в GCal для новых событий?
  • Как сохранить SMS в папку «Входящие» в андроиде?
  • Android - приемник SMS-вещания
  • Отправка SMS с веб-сайта ASP.NET
  • Давайте будем гением компьютера.