gpt4 book ai didi

Android:打开短信 Intent

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:18:01 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我只需要使用预填充的 message_bodyPhoneNumber 打开 SMS Intent。

下面是我正在尝试的代码

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);

在默认情况下一切正常,但如果安装了 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

问题

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

最佳答案

如果你真的想限制到谷歌安卓短信应用,那么可以指定谷歌应用的包名。但是还有很多其他应用程序会读取“sms_body”Intent Key。

Uri uri = Uri.parse(String.format("smsto:%s", strPhoneNumber));
Intent smsIntent = new Intent(Intent.ACTION_SENDTO, uri);
smsIntent.putExtra("sms_body", "Sample Body");
// To Force Google Android SMS APP To Open
smsIntent.setPackage("com.google.android.apps.messaging");
if (smsIntent.resolveActivity(getPackageManager()) != null)
{
startActivityForResult(smsIntent, OPEN_SMS_APP);
}
else
{
// Display error message to say Google Android SMS APP required.
}

但我会使用应用程序选择器,而不是仅限于 Google SMS 应用程序。显然,用户必须经过一个额外的步骤(单击),但它会列出所有 SMS 应用程序(每次),并且用户可以选择正确运行的 SMS 应用程序。

startActivityForResult(Intent.createChooser(smsIntent, "Sample Title"), OPEN_SMS_APP); 

关于Android:打开短信 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49321715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com