android 仅通过短信共享

m2xkgtsf  于 2022-12-25  发布在  Android
关注(0)|答案(5)|浏览(194)

我的应用程序有一个图像按钮,点击它应该发送一段文字通过短信只。我如何让我的应用程序做到这一点?请帮助。
我还希望用户能够从他的设备上的联系人列表中选择一个联系人。
朱马纳

iq0todco

iq0todco1#

要使用Intent发送短信,请使用此代码:

String smsBody="Sms Body";
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", smsBody); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

希望这能有所帮助!

oalqel3c

oalqel3c2#

启用发送短信功能的步骤:
1-在android-manifest中添加发送短信权限,如下所示:

<uses-permission android:name="android.permission.SEND_SMS" />

2-在yout Activity中添加此方法:

public void sendSms(final String receiverNumber, final String smsBody) {
    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(receiverNumber, null, smsBody, null, null);        
}
polhcujo

polhcujo3#

这是通过Intent发送SMS/MMS的唯一正确方法:
https://developer.android.com/guide/components/intents-common#SendMessage
不需要setType("vnd.android-dir/mms-sms")或其他恶作剧。
有这样的意图的官方文件,应该遵循。
对于短信,您需要的是:

fun composeSmsMessage(message: String) {
    val intent = Intent(Intent.ACTION_SENDTO).apply {
        type = HTTP.PLAIN_TEXT_TYPE
        data = Uri.parse("smsto:")  // This ensures only SMS apps respond
        putExtra("sms_body", message)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

如果您有短信/彩信的收件人,您可以将其添加到数据smsto:之后的Uri中,例如smsto:+123456789),否则用户将在短信/彩信应用程序中选择收件人。
如果文本太长,它将被发送为彩信,如果你需要发送一个带有图像或视频的彩信,你做类似的,但添加一个Uri作为Intent.EXTRA_STREAM,并指定相应的类型(图像/视频)。Uri需要由一个公开的内容提供商提供相应的图像或视频处理。
就个人而言。
(我希望在堆栈溢出中有一种方法可以为“错误答案”投票,以避免人们只是将错误的东西复制到他们的应用程序中)

2w2cym1i

2w2cym1i4#

private void shareViaText(){
        Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
        smsIntent.setData(Uri.parse("smsto:"));
        smsIntent.putExtra("sms_body", "Some text");
        startActivity(smsIntent);
        
    }

如果要确保Intent仅由文本消息应用程序(而非其他电子邮件或社交应用程序)处理,请使用**ACTION_SENDTO操作并包含smsto:**数据方案
source : https://developer.android.com/guide/components/intents-common#java

e37o9pze

e37o9pze5#

请尝试以下代码...将此代码添加到Button的onClickListener()中。

Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        String shareBody = "Here is the share content body";
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
        startActivity(Intent.createChooser(sharingIntent, "Share via"));

相关问题