Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/article.php on line 21

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 218

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 192

Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/dkwsorgu/domains/dkws.org.ua/public_html/demo/library.php on line 169
Соединение СЃ внешним РјРёСЂРѕРј - Сайт Дениса Колисниченко
 

Облачный хостинг VDS за 2 минуты

Настоящий облачный VDS-хостинг от UltraVDS: тестируем производительность

Соединение с внешним миром


Отправка SMS

Для отправки 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);

РќРѕ запуск браузера нам мало интересен. Подумайте сами: напишете РІС‹ приложение, запускающее браузер. Р