Russian Qt Forum

Qt => Общие вопросы => Тема начата: kuzulis от Сентябрь 22, 2015, 18:42



Название: [Решено][Android] Послать SMS
Отправлено: kuzulis от Сентябрь 22, 2015, 18:42
Всем доброго времени.

Собственно, требуется написать код для отправки СМС, используя андройдовский Java API.
Есть у кого какие решения?

Пробовал во этот пример: http://grimaldi.univ-tln.fr/une-application-qt-android-qui-envoie-des-sms.html

Код
C++ (Qt)
void Widget::on_pushButton_clicked()
{
   // get the Qt android activity
   //QAndroidJniObject activity =  QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
   //                                                                        "activity",
   //"()Landroid/app/Activity;");
  //if (activity.isValid()){
       // get the default SmsManager
       QAndroidJniObject mySmsManager = QAndroidJniObject::callStaticObjectMethod("android/telephony/SmsManager",
                                                                                  "getDefault",
                                                                                  "()Landroid/telephony/SmsManager;" );
       // get phone number & text from UI and convert to Java String
       QAndroidJniObject myPhoneNumber = QAndroidJniObject::fromString(ui->lineEditDestinataire->text());
       QAndroidJniObject myTextMessage = QAndroidJniObject::fromString(ui->lineEditTexte->text());
       QAndroidJniObject scAddress = NULL;
       QAndroidJniObject sentIntent = NULL;
       QAndroidJniObject deliveryIntent = NULL;
 
       // call the java function:
       // public void SmsManager.sendTextMessage(String destinationAddress,
       //                                        String scAddress, String text,
       //                                        PendingIntent sentIntent, PendingIntent deliveryIntent)
       // see: http://developer.android.com/reference/android/telephony/SmsManager.html
 
       mySmsManager.callMethod<void>("sendTextMessage",
                                     "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V",
                                     myPhoneNumber.object<jstring>(),
                                     scAddress.object<jstring>(),
                                     myTextMessage.object<jstring>(), NULL, NULL );
 
   //}
   //else
   //    qDebug() << "Something wrong with Qt activity...";
 
}
 

Но оно нифига не посылает, а вываливается с ошибкой в консоль: "Something wrong with Qt activity..."
Но если комментирую код, связанный с "activity", то само приложение вываливается с ошибкой типа: "Unfortunately, send-sms has stopped".

Блин, есть у кого рабочий код? :)



Название: Re: [Android] Послать SMS
Отправлено: gil9red от Сентябрь 22, 2015, 19:42
Через сервис http://sms.ru, через http запрос:
https://github.com/gil9red/SimplePyScripts/blob/master/send_sms/send_sms.py


Название: Re: [Android] Послать SMS
Отправлено: kuzulis от Сентябрь 22, 2015, 21:02
Считаем, что нет доступа к интернету.


Название: [Решено][Android] Послать SMS
Отправлено: kuzulis от Сентябрь 23, 2015, 12:09
Вау, все заработало  :o. Кому интересно - проект в аттаче. :)