使用本机短信应用程序发送短信而不启动自己

dev*_*hik 1 sms android android-intent

我想发送短信,但不使用SmsManager类.我想用Android手机上的原生短信应用程序来做.

这就是扭曲:我不想在这样做时启动本机应用程序.是否有一些意图格式可以通过本机应用程序直接发送短信(给定sms-body和发送给它的电话号码)(用户不必点击'发送').

我用谷歌搜索相同,但所有结果和响应只是启动本机短信,等待用户手动发送短信.我已经看到这在一些应用程序中实现,如'MightyText',并希望在我的应用程序中实现.

请帮忙 !

wna*_*fee 14

使用SmsManager将通过系统发送短信,但不会像前面提到的那样将其放入SMS内容提供商.因此,任何本机消息应用程序都不会看到它.

为此,您必须在通过SmsManager正常发送消息后通过SMS内容提供程序手动添加它.这里有一些示例代码可以帮助您:

ContentValues values = new ContentValues();
values.put("address", "+12345678"); // phone number to send
values.put("date", System.currentTimeMillis()+""); 
values.put("read", "1"); // if you want to mark is as unread set to 0
values.put("type", "2"); // 2 means sent message
values.put("body", "This is my message!");

Uri uri = Uri.parse("content://sms/");
Uri rowUri = context.getContentResolver().insert(uri,values);
Run Code Online (Sandbox Code Playgroud)

就这样.之后,您会注意到它已添加,本机消息传递应用程序正常显示它.

如果它适合你,请点击"接受"答案.

  • 只是想添加到wnafee的答案,这段代码还需要将android.permissions.READ_SMS/android.permissions.WRITE_SMS添加到清单中,并且代码就像魅力一样!谢谢wnafee. (6认同)

Roy*_*nto 5

好的,所以你想发送短信,而不使用SmsManager,而且它应该显示在你的原生短信应用列表中?

首先,您不能绕过SmsManager发送短信.如果您查看Samsung Galaxy Nexus的所有本机消息传递应用程序的源代码,它将在按钮单击时调用SmsManager.

所以,上面公布的下面一段代码是正确的

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
Run Code Online (Sandbox Code Playgroud)

其次,在发送消息后,本机应用程序将其放入SMS ContentProvider

按照这个如何将短信保存到Android的收件箱?

需要注意的是,现在不支持添加此功能.因此,您可能不得不求助于将其添加到已发送的框中.