Android:打开短信意图

Jib*_*ibW 6 android facebook android-intent android-facebook android-sms

在我的 Android 应用程序中,我只需要使用预先填充的message_body和PhoneNumber打开 SMS 意图。

以下是我正在尝试的代码

Uri uri = Uri.parse(String.format("smsto:%s", strPhoneNumber));
Intent smsIntent = new Intent(Intent.ACTION_SENDTO, uri);
smsIntent.putExtra("sms_body", "Sample Body");
startActivityForResult(smsIntent, OPEN_SMS_APP);
Run Code Online (Sandbox Code Playgroud)

在默认情况下一切都很好,但是如果安装了Facebook Messenger并将其设置为默认的 SMS 应用程序(设置 -> 应用程序和通知 -> 默认应用程序 -> SMS 应用程序),则功能会中断。

问题是,即使它正确选择了电话号码(在 FB Messenger APP 中),它也会在没有message_body(空)的情况下打开FB Messenger。

此外,我尝试了以下测试但没有选择 SMS_BODY 或打开默认的 Android APP

smsIntent.addCategory(Intent.CATEGORY_APP_MESSAGING); // STILL DIDN'T FIX
smsIntent.putExtra(Intent.EXTRA_TEXT, "Sample Body"); // STILL DIDN'T FIX
Run Code Online (Sandbox Code Playgroud)

问题

  1. 即使有人将任何其他 3rd 方 SMS 应用程序设置为默认应用程序,我是否也可以强制打开默认的 Android SMS 应用程序(消息应用程序)?
  2. 或者我可以通过任何其他方式传递 message_body 参数以在其他 3rd 方应用程序中工作吗?

Com*_*are 0

它打开 FB Messenger,但没有 message_body(空)

没有要求任何应用程序尊重未记录的Intent额外内容。

此外,我尝试了以下测试,但没有选择 SMS_BODY 或打开默认的 Android APP

EXTRA_TEXT没有记录与 一起使用ACTION_SENDTO,也没有记录CATEGORY_APP_MESSAGING。

有没有办法可以强制打开默认的 Android 短信应用程序(消息应用程序)

Android 设备型号约有 10,000 种。我预计会有数十个(如果不是数百个)预安装的“Android SMS 应用程序”。他们都不必尊重Intent未明确记录为支持的额外内容或类别ACTION_SENDTO。

我还可以通过其他方式传递 message_body 参数以在其他第 3 方应用程序中工作吗?

ACTION_SEND— 不ACTION_SENDTO— 提供EXTRA_TEXT。但是,您无法强制将内容发送到何处。这取决于用户。

如果您拥有权限,也可以SmsManager直接发送短信SEND_SMS。