{DATE}
Для отправки SMS используется класс SmsManager. В ранних версиях Android этот класс был помещен в пакет android.telephony.gsm, сейчас (начиная с версии 1.5) он находится в пакете android.telephony.
Отправить SMS довольно просто. Первым делом нужно добавить в файл манифеста соответствующее разрешение:
<uses-permission android:name="android.permission.SEND_SMS">
Затем нужно определить объект класса SmsManager, для этого используется статический метод getDefault(). Далее нужно определить получателя сообщения (его номер телефона) и текст самого сообщения:
import android.telephony.SmsManager; import android.telephony.SmsMessage; ... SmsManager sendSMS = SmsManager.getDefault(); String num = "номер получателя"; String msg = "My first SMS"; sendSMS.sendTextMessage(num, null, msg, null, null);
Метод sendTextMessage() отправляет SMS. Обычно нужно указать первый и третий параметры. Первый параметр задает номер телефона получателя, третий — текст сообщения. Второй параметр позволяет указать номер SMS-центра. Если указано значение null, будет использован номер SMS-центра, указанный в настройках телефона. Четвертый и пятый параметры используются, соответственно, для отсле-живания факта отправки и доставки сообщения.
Разберемся, как использовать четвертый и пятый параметры:
// Определяем флаги отправки и доставки SMS
String SENT_SMS_FLAG = "SENT_SMS";
String DELIVER_SMS_FLAG = "DELIVER_SMS";
// Создаем соответствующие действия
// Действие, связанное с отправкой SMS
Intent sent_sms = new Intent(SENT_SMS_FLAG);
// Отложенная деятельность, связанная с sent_sms
PendingIntent spin = PendingIntent.getBroadcast(this,0,sent_sms,0);
// Аналогично для доставки:
Intent deliver_sms = new Intent(DELIVER_SMS_FLAG);
PendingIntent dpin = PendingIntent.getBroadcast(this,0,deliver_sms,0);
Теперь создаем BroadcastReceiver, необходимый для получения результата. Такой BroadcastReceiver нужно зарегистрировать для каждого отложенного действия:
// Получаем отчет об отправке
BroadcastReceiver sentReceiver = new BroadcastReceiver(){
@Override public void onReceive(Context c, Intent in) {
switch(getResultCode()){
case Activity.RESULT_OK:
// SMS отправлено, выполняем какие-то действия
break;
default:
// РЎР±РѕР№
break;
}
} };
// Получаем отчет о доставке
BroadcastReceiver deliverReceiver = new BroadcastReceiver(){
@Override public void onReceive(Context c, Intent in) {
switch(getResultCode()){
case Activity.RESULT_OK:
// SMS доставлено, выполняем какие-то действия
break;
default:
// РЎР±РѕР№
break;
}
} };
// Регистрируем BroadcastReceiver
registerReceiver(sentReceiver, new IntentFilter(SENT_SMS_FLAG));
registerReceiver(deliverReceiver, new IntentFilter(DELIVER_SMS_FLAG));
В большинстве случаев SMS не должно превышать 140 символов. Для отправки более длинных сообщений используется метод divideMessage(), разбивающий сообщения на фрагменты, равные максимальному размеру SMS-сообщения. Отправка такого сообщения осуществляется методом sendMultipartTextMessage(), который используется вместо метода sendTextMessage(). Для получения отчета о доставке (или отправке) нужно использовать уже не одно отложенное событие, а массив таких событий. Количество элементов в таком массиве будет равно количеству частей, на которые было разбито исходное сообщение:
ArrayList<String> multiSMS = sendSMS.divideMessage(msg);
ArrayList<PendingIntent> sent_sms = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliver_sms = new ArrayList<PendingIntent>();
for(int i=0; i< multiSMS.size(); i++){
sentIns.add(sentIn);
deliverIns.add(deliverIn);
}
sendSMS.sendMultipartTextMessage(num, null,
multiSMS, sentIns, deliverIns);
Ранее было сказано, что максимальная длина SMS составляет 140 байтов. Обратите внимание: именно байтов, а не символов. Когда вы отправляете SMS латинскими символами, то 140 байтов означает 140 символов. Когда же вы используете в SMS-сообщении символы национальных алфавитов, например, кириллицу, то максимальная длина сокращается до 70 символов. Для кодирования символов национальных алфавитов используется кодировка UCS-2, где каждый символ представлен 2 байтами (16 битами), поэтому количество символов, которые можно отправить в одной SMS, сокращается до 70. Помните об этом!
Запустить браузер для отображения заданной странички можно с помощью дейст-вия ACTION_NEW, сделать это достаточно просто:
Intent browser = Intent(Intent.ACTION_VIEW);
browser.setData(Uri.parse("http://www.dkws.org.ua"));
startActivity(browser);
РќРѕ запуск браузера нам мало интересен. Подумайте сами: напишете РІС‹ приложение, запускающее браузер. Р