Как сохранить SMS в папку «Входящие» в андроиде?

Я написал приведенный ниже код для отправки SMS-сообщений.

SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(destAddr, null, mMessageText, il, null); 

Но это не обновление в моей папке «Входящие», мне нужно сохранить одно и то же сообщение в папке «Входящие», или есть ли способ вызвать собственное приложение для отправки SMS?

Вы можете использовать поставщик контента sms для чтения и записи sms-сообщений:

 ContentValues values = new ContentValues(); values.put("address", "123456789"); values.put("body", "foo bar"); getContentResolver().insert(Uri.parse("content://sms/sent"), values); 

Я не знаю, почему вы хотите написать сообщение, отправленное во входящие, но если это то, что вы хотите, просто измените вышеуказанный uri на "content://sms/inbox" .

В качестве альтернативы вы можете передать приложение для обмена сообщениями, запустив действие с намерением, аналогичным следующему:

 Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("sms://")); sendIntent.putExtra("address", "123456789"); sendIntent.putExtra("sms_body", "foo bar"); startActivity(sendIntent); 

Изменить: Однако поставщик контента sms:// не является частью SDK, поэтому я настоятельно рекомендую не использовать такой код в публичных приложениях по нескольким причинам .

Если вы хотите вручную добавить SMS-сообщение в свой почтовый ящик с именем отправителя,

  ContentValues values = new ContentValues(); values.put("address", "+923359110795");//sender name values.put("body", "this is my text"); getContentResolver().insert(Uri.parse("content://sms/inbox"), values); 

также добавьте их в манифест.

    

Теперь этот код добавит sms в папку «Входящие» с определенным именем отправителя, поэтому вы можете легко справиться с этой проблемой с помощью этого решения,

Этот код будет работать для всех версий Android, включая выше kitkat (19)

 public boolean saveSms(String phoneNumber, String message, String readState, String time, String folderName) { boolean ret = false; try { ContentValues values = new ContentValues(); values.put("address", phoneNumber); values.put("body", message); values.put("read", readState); //"0" for have not read sms and "1" for have read sms values.put("date", time); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Uri uri = Telephony.Sms.Sent.CONTENT_URI; if(folderName.equals("inbox")){ uri = Telephony.Sms.Inbox.CONTENT_URI; } mActivity.getContentResolver().insert(uri, values); } else { mActivity.getContentResolver().insert(Uri.parse("content://sms/" + folderName), values); } ret = true; } catch (Exception ex) { ex.printStackTrace(); ret = false; } return ret; } 

Как позвонить

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { final String myPackageName = getPackageName(); if (!Telephony.Sms.getDefaultSmsPackage(this).equals(myPackageName)) { Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT); intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, myPackageName); startActivityForResult(intent, 1); }else { saveSms("111111", "mmmmssssggggg", "0", "", "inbox"); } }else { saveSms("111111", "mmmmssssggggg", "0", "", "inbox"); } 

onActivityResult

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { if (resultCode == RESULT_OK) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { final String myPackageName = getPackageName(); if (Telephony.Sms.getDefaultSmsPackage(mActivity).equals(myPackageName)) { //Write to the default sms app saveSms("111111", "mmmmssssggggg", "0", "", "inbox"); } } } } } 

Для более подробного или примера приложения следуйте ссылке: http://wisdomitsol.com/blog/android/sms/how-to-programmatically-save-sms-to-inbox-or-sent-in-android

 Intent sendIntent = new Intent(Intent.ACTION_VIEW); sendIntent.putExtra("sms_body", "Content of the SMS goes here..."); sendIntent.setType("vnd.android-dir/mms-sms"); startActivity(sendIntent); 

вызывать собственное SMS-приложение с контентом

 ContentValues values = new ContentValues(); values.put("address", phoneNumber); values.put("body", multimessage); values.put("read", 1); //"0" for have not read sms and "1" for have read sms Uri uri = Telephony.Sms.Sent.CONTENT_URI; Activity ctx = this.cordova.getActivity(); ctx.getContentResolver().insert(uri, values); 
  • SMS-шлюз для Windows + C #
  • как получить сообщение при получении уведомления «kCTMessageReceivedNotification» на IOS5
  • Читать все SMS от конкретного отправителя
  • Отправка текстовых сообщений программно в android
  • как отправить sms программно?
  • Отправка и получение текста с использованием эмулятора Android
  • Подавлять / Блокировать BroadcastReceiver в другом приложении
  • GSM SM5100B CMEERROR: ошибка 4
  • Как отправлять SMS-сообщения с моего компьютера через Android-телефон?
  • Android делает скриншот с помощью кода
  • Получение SMS-сообщений в Android-приложении
  • Давайте будем гением компьютера.