Полезные примеры Android

Полезные примеры Android
Android — отправка SMS

В Android вы можете использовать SmsManager API или встроенное приложение SMS для устройств для отправки SMS. В этом руководстве мы покажем вам два основных примера отправки SMS-сообщения:

SmsManager API

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNo", null, "sms message", null, null);

Встроенное приложение для SMS

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content"); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

Конечно, оба требуют разрешения SEND_SMS .

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

Помимо указанного выше метода, в классе SmsManager доступно несколько других важных функций. Эти методы перечислены ниже —

Sr.No. Метод и описание
1

ArrayList<String> divideMessage(String text)

Этот метод разбивает текст сообщения на несколько фрагментов, не превышающих максимальный размер SMS-сообщения.

2

static SmsManager getDefault()

Этот метод используется для получения экземпляра SmsManager по умолчанию.

3

void sendDataMessage(String destinationAddress, String scAddress, short destinationPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent)

Этот метод используется для отправки SMS на основе данных на определенный порт приложения.

4

void sendMultipartTextMessage(String destinationAddress, String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents)

Отправьте SMS-сообщение, состоящее из нескольких частей.

5

void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

Отправьте текстовое SMS-сообщение.

Пример

Следующий пример показывает вам на практике, как использовать объект SmsManager для отправки SMS на указанный номер мобильного телефона.

Чтобы поэкспериментировать с этим примером, вам понадобится настоящее мобильное устройство с последней версией ОС Android, иначе вам придется бороться с эмулятором, который может не работать.

Шаг Описание
1 Вы будете использовать Android Studio IDE для создания Android-приложения и назовете его как tutorialspoint в пакете com.example.tutorialspoint .
2 Измените файл src / MainActivity.java и добавьте требуемый код для отправки смс.
3 Измените XML-файл макета res / layout / activity_main.xml, добавьте при необходимости любой компонент графического интерфейса. Я добавляю простой графический интерфейс для отправки номера мобильного телефона и текста SMS и простую кнопку для отправки SMS.
4 Нет необходимости определять строковые константы по умолчанию в res / values ​​/ strings.xml. Студия Android заботится о константах по умолчанию.
5 Измените AndroidManifest.xml, как показано ниже.
6 Запустите приложение, чтобы запустить эмулятор Android и проверить результат изменений, внесенных в приложение.

Ниже приводится содержимое измененного файла основного действия src / com.example.tutorialspoint / MainActivity.java .

package com.example.tutorialspoint;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ;
Button sendBtn;
EditText txtphoneNo;
EditText txtMessage;
String phoneNo;
String message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendBtn = (Button) findViewById(R.id.btnSendSMS);
txtphoneNo = (EditText) findViewById(R.id.editText);
txtMessage = (EditText) findViewById(R.id.editText2);
sendBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendSMSMessage();
}
});
}
protected void sendSMSMessage() {
phoneNo = txtphoneNo.getText().toString();
message = txtMessage.getText().toString();
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.SEND_SMS)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_SEND_SMS: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.", 
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), 
"SMS faild, please try again.", Toast.LENGTH_LONG).show();
return;
}
}
}
}
}

Ниже будет содержимое файла res / layout / activity_main.xml

Здесь abc указывает на логотип tutorialspoint

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sending SMS Example"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point "
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_below="@+id/textView1"
android:layout_alignRight="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:hint="Enter Phone Number"
android:phoneNumber="true"
android:textColorHint="@color/abc_primary_text_material_dark"
android:layout_below="@+id/imageButton"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText"
android:textColorHint="@color/abc_primary_text_material_dark"
android:layout_alignRight="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton"
android:hint="Enter SMS" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send Sms"
android:id="@+id/btnSendSMS"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="48dp" />
</RelativeLayout>

Ниже будет содержимое файла res / values ​​/ strings.xml для определения двух новых констант:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">tutorialspoint</string>
</resources>

Ниже содержание по умолчанию AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint" >
<uses-permission android:name="android.permission.SEND_SMS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.tutorialspoint.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

Попробуем запустить ваше приложение tutorialspoint . Я предполагаю, что вы подключили свое настоящее мобильное устройство Android к компьютеру. Чтобы запустить приложение из студии Android, откройте один из файлов активности вашего проекта и щелкните Значок запуска Eclipseзначок « Выполнить» на панели инструментов. Перед запуском вашего приложения установщик Android Studio отобразит следующее окно, чтобы выбрать вариант, в котором вы хотите запустить приложение Android.

Мобильное устройство Android

Теперь вы можете ввести желаемый номер мобильного телефона и текстовое сообщение, которое будет отправлено на этот номер. Наконец, нажмите кнопку « Отправить SMS» , чтобы отправить SMS. Убедитесь, что ваше соединение GSM / CDMA работает нормально, чтобы доставить SMS получателю.

Вы можете взять несколько SMS, разделенных запятыми, а затем внутри вашей программы вам нужно будет проанализировать их в строку массива и, наконец, вы можете использовать цикл для отправки сообщения на все заданные номера. Вот так можно написать собственный SMS-клиент. В следующем разделе будет показано, как использовать существующий SMS-клиент для отправки SMS.

Использование встроенного намерения для отправки SMS

Вы можете использовать Android Intent для отправки SMS, вызвав встроенные функции SMS в Android. В следующем разделе объясняются различные части нашего объекта Intent, необходимые для отправки SMS.

Intent Object — действие для отправки SMS

Вы будете использовать действие ACTION_VIEW для запуска SMS-клиента, установленного на вашем устройстве Android. Ниже приведен простой синтаксис для создания намерения с действием ACTION_VIEW.

Intent smsIntent = new Intent(Intent.ACTION_VIEW);

Объект Intent — данные / тип для отправки SMS

Чтобы отправить SMS, вам необходимо указать smsto: в качестве URI с использованием метода setData (), а тип данных будет vnd.android-dir / mms-sms с использованием метода setType () следующим образом:

smsIntent.setData(Uri.parse("smsto:"));
smsIntent.setType("vnd.android-dir/mms-sms");

Объект Intent — Дополнительно для отправки SMS

Android имеет встроенную поддержку для добавления номера телефона и текстового сообщения для отправки SMS следующим образом:

smsIntent.putExtra("address"  , new String("0123456789;3393993300"));
smsIntent.putExtra("sms_body"  , "Test SMS to Angilla");

Здесь адрес и sms_body чувствительны к регистру и должны быть указаны только маленькими символами. Вы можете указать более одного числа в одной строке, но через точку с запятой (;).

Пример

Следующий пример показывает вам на практике, как использовать объект Intent для запуска SMS-клиента для отправки SMS-сообщения указанным получателям.

Чтобы поэкспериментировать с этим примером, вам понадобится настоящее мобильное устройство с последней версией ОС Android, иначе вам придется бороться с эмулятором, который может не работать.

Шаг Описание
1 Вы будете использовать Android studio IDE для создания Android-приложения и назовете его как tutorialspoint в пакете com.example.tutorialspoint .
2 Измените файл src / MainActivity.java и добавьте требуемый код для отправки SMS.
3 Измените XML-файл макета res / layout / activity_main.xml, добавьте при необходимости любой компонент графического интерфейса. Добавляю простую кнопку для запуска SMS-клиента.
4 Нет необходимости определять константы по умолчанию. Студия Android позаботится о константах по умолчанию.
5 Измените AndroidManifest.xml, как показано ниже.
6 Запустите приложение, чтобы запустить эмулятор Android и проверить результат изменений, внесенных в приложение.

Ниже приводится содержимое измененного файла основного действия src / com.example.tutorialspoint / MainActivity.java .

package com.example.tutorialspoint;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button startBtn = (Button) findViewById(R.id.button);
startBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendSMS();
}
});
}
protected void sendSMS() {
Log.i("Send SMS", "");
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setData(Uri.parse("smsto:"));
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address"  , new String ("01234"));
smsIntent.putExtra("sms_body"  , "Test ");
try {
startActivity(smsIntent);
finish();
Log.i("Finished sending SMS...", "");
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MainActivity.this, 
"SMS faild, please try again later.", Toast.LENGTH_SHORT).show();
}
}
@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;
}
}

Ниже будет содержимое файла res / layout / activity_main.xml

Здесь abc указывает на логотип tutorialspoint

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Drag and Drop Example"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials Point "
android:id="@+id/textView2"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:textSize="30dp"
android:textColor="#ff14be3c" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_marginTop="48dp"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Compose SMS"
android:id="@+id/button"
android:layout_below="@+id/imageView"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_marginTop="54dp"
android:layout_alignLeft="@+id/imageView"
android:layout_alignStart="@+id/imageView" />
</RelativeLayout>

Ниже будет содержимое файла res / values ​​/ strings.xml для определения двух новых констант:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">tutorialspoint</string>
</resources>

Ниже содержание по умолчанию AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.tutorialspoint.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

Попробуем запустить ваше приложение tutorialspoint . Я предполагаю, что вы подключили свое настоящее мобильное устройство Android к компьютеру. Чтобы запустить приложение из студии Android, откройте один из файлов активности вашего проекта и щелкните Значок запуска Eclipseзначок « Выполнить» на панели инструментов. Перед запуском вашего приложения студия Android отобразит следующее окно, чтобы выбрать вариант, в котором вы хотите запустить приложение Android.

Мобильное устройство Android

Выберите свое мобильное устройство в качестве опции, а затем проверьте свое мобильное устройство, которое отобразит следующий экран —

Android Mobile SMS Compose

Теперь используйте кнопку « Написать SMS» для запуска встроенных в Android клиентов SMS, как показано ниже —

Экран мобильных SMS Android

Вы можете изменить любое из заданных полей по умолчанию и, наконец, использовать кнопку отправки SMS, чтобы отправить свое SMS указанному получателю.

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the compare bar
Compare