1

在我的 Android 应用程序中,我需要编写一个函数来打开设备的 SMS 应用程序(如果存在)。我有下面的代码。

String smsText = "Some text for the sms";
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
sendIntent.putExtra("sms_body", smsText);
this.startActivity(sendIntent);

此代码将打开 SMS 应用程序,但它会在我的应用程序中打开 Compose UI。这意味着用户必须退出 SMS UI 才能继续使用我的应用程序。如果用户从主屏幕或应用程序列表转到应用程序启动器,它也会以相同的状态打开,因为它只是从应用程序停止的地方恢复。

这是在运行 Android 4.3 的三星 Galaxy S4 上测试的

有没有办法完全改变上下文并打开短信应用程序,离开我的应用程序?或者有没有办法在发送短信后关闭短信应用程序?

任何帮助,将不胜感激。这种行为不是我所期望的,但也许这就是 Android 的工作方式。

** 编辑 **

“它在我的应用程序中打开 Compose UI” - 我的意思是 SMS 应用程序的 Compose 屏幕已打开。但从任何其他情况来看,它看起来像是我的应用程序。因此,如果我点击主页按钮并返回设备主屏幕,然后单击应用程序图标,它不会返回我的应用程序所在的最后一个位置,而是再次进入 SMS 屏幕。如果我查看所有打开的应用程序,SMS 屏幕的图像在我的应用程序名称下,而不是 SMS 应用程序的名称下。因此,从每个可用资源来看,似乎 SMS 应用程序是以我的应用程序的名称打开的。

4

1 回答 1

0

如果您不希望 Compose Message UI 作为应用程序任务的一部分打开,只需在新任务中启动它,如下所示:

String smsText = "Some text for the sms";
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setData(Uri.parse("sms:"));
sendIntent.putExtra("sms_body", smsText);
sendIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(sendIntent);
于 2013-11-07T12:21:29.377 回答