Android: отправка SMS (с помощью папки «Исходящие») - PullRequest
3 голосов
/ 05 июля 2010

Я работаю над приложением SMS для Android, которое, несомненно, должно отправлять SMS-сообщения (иди на цифру!отправлять SMS ... Но, по-видимому, при использовании этого метода SMS-сообщения не сохраняются в папке "SENT" ... что является своего рода основным требованием для приложения SMS.

Как сделатья добавляю запись (сообщения) в папку «Исходящие», чтобы она отправлялась (и сохранялась в папке SENT автоматически)…. Каковы будут значения полей «_id, threadid, read, status,type, service_center "(Атрибуты таблицы сообщений) ??

Любые другие альтернативы также приветствуются.:) Заранее спасибо ...

Ответы [ 4 ]

4 голосов
/ 23 мая 2012

Я искал работу по этой проблеме. Добавьте следующие строки кода после отправки смс ... это сделает запись в папке исходящих сообщений родного смс приложения

ContentValues values = new ContentValues();

values.put("address", number);
values.put("body", desc); 

getApplicationContext().getContentResolver().insert(Uri.parse("content://sms/sent"),    values);

Я хотел бы получить помощь от ppl, который может рассказать, как использовать этот контент-провайдер, чтобы сделать запись для нескольких получателей ... Спасибо ..

1 голос
/ 05 июля 2010

Но, по-видимому, при использовании этого метода SMS-сообщения не сохраняются в папке "SENT" ... что является своего рода основным требованием для приложения SMS.

Концепция папки SENT - это функция приложения, а не операционной системы.Если вы хотите создать свое собственное клиентское приложение SMS, создайте свою собственную папку «SENT» в качестве функции этого приложения.Вы знаете, какие сообщения вы отправляете, поэтому вы можете хранить их где угодно (например, в базе данных SQLite).

Если вы хотите отправлять SMS-сообщения и они появляются в папке «SENT» выбранного пользователяSMS-клиент, не используйте SmsManager.Вместо этого используйте ACTION_SENDTO и отправьте сообщение выбранному пользователем SMS-клиенту, как показывает этот пример проекта .

0 голосов
/ 30 ноября 2017

Как минимум на 6.0 и 7.0 системное приложение com.android.phone отвечает за хранение сообщений, отправленных другими приложениями. К сожалению, некоторые производители нарушают эту функцию, поэтому мы не видим отправленных сообщений.

Это работает на AVD, хотя. См. Метод persistSentMessageIfRequired () в com.android.internal.telephony.SMSDispatcher.

Только это приложение или выбранное приложение SMS по умолчанию имеет разрешение на запись для поставщика содержимого SMS. Когда вы отправляете его с помощью приложения SMS, он вызывает insert() напрямую. Когда вы используете SmsManager в своем приложении, системное приложение com.android.phone каким-то образом получает уведомление, выполняет отправку и затем сохраняет отправленное сообщение. Вот стек вызовов (я не копал дальше):

  at android.os.Handler.obtainMessage(Handler.java:293)
  at com.android.internal.telephony.gsm.GsmSMSDispatcher.sendSmsByPstn(GsmSMSDispatcher.java:291)
  at com.android.internal.telephony.gsm.GsmSMSDispatcher.sendSms(GsmSMSDispatcher.java:274)
  at com.android.internal.telephony.SMSDispatcher.sendRawPdu(SMSDispatcher.java:999)
  at com.android.internal.telephony.gsm.GsmSMSDispatcher.sendText(GsmSMSDispatcher.java:198)
  at com.android.internal.telephony.ImsSMSDispatcher.sendText(ImsSMSDispatcher.java:206)
  at com.android.internal.telephony.IccSmsInterfaceManager.sendTextInternal(IccSmsInterfaceManager.java:452)
  at com.android.internal.telephony.IccSmsInterfaceManager.sendText(IccSmsInterfaceManager.java:393)
  at com.android.internal.telephony.UiccSmsController.sendTextForSubscriber(UiccSmsController.java:136)
  at com.android.internal.telephony.ISms$Stub.onTransact(ISms.java:201)
  at android.os.Binder.execTransact(Binder.java:565)

После отправки SMS приложение отправляет себе сообщение Handler:

     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343)
     at com.android.providers.telephony.SmsProvider.insertInner(SmsProvider.java:618)
     at com.android.providers.telephony.SmsProvider.insert(SmsProvider.java:442)
     at android.content.ContentProvider$Transport.insert(ContentProvider.java:264)
     at android.content.ContentResolver.insert(ContentResolver.java:1274)
     at com.android.internal.telephony.SMSDispatcher$SmsTracker.persistSentMessageIfRequired(SMSDispatcher.java:1445)
     at com.android.internal.telephony.SMSDispatcher$SmsTracker.persistOrUpdateMessage(SMSDispatcher.java:1476)
     at com.android.internal.telephony.SMSDispatcher$SmsTracker.onSent(SMSDispatcher.java:1537)
     at com.android.internal.telephony.SMSDispatcher.handleSendComplete(SMSDispatcher.java:638)
     at com.android.internal.telephony.SMSDispatcher.handleMessage(SMSDispatcher.java:274)
     at com.android.internal.telephony.gsm.GsmSMSDispatcher.handleMessage(GsmSMSDispatcher.java:108)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:154)
     at android.app.ActivityThread.main(ActivityThread.java:6077)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
0 голосов
/ 28 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...