0

我必须在按钮上附加一个带有短信的图像文件单击我使用此代码

final Intent smsIntent = new Intent(android.content.Intent.ACTION_SEND);
smsIntent.putExtra("sms_body", "Hello World!"); 
smsIntent.putExtra("address", "0123456789");
smsIntent.putExtra(Intent.ACTION_ATTACH_DATA,screenshotUri);
smsIntent.setType("image/png");
startActivity(smsIntent);

但这显示了一个选择器来选择 Facebook、电子邮件、消息等操作。但我不希望任何选择器视图它将直接显示带有附件的消息意图。

4

1 回答 1

2

您正在寻找的内容无法使用implicitIntents 完成。因为这就是 Android 系统被设计用来处理隐式意图的方式。如果您希望您的意图由特定应用程序处理,那么您必须制作它们explicit,即指定一个必须处理该意图的组件。但是,当您使用explicit意图来处理任何情况时,当目标设备中不存在特定组件(即应用程序)时,您的应用程序很有可能会中断。Android 正被多家 OEM 采用,因此他们每个人都倾向于用自己的消息应用程序替换库存的消息应用程序。因此,似乎在一台设备上有效的东西可能在另一台设备上无效。

如果您想实现您想要的,那么您可能需要获取各种设备上的消息应用程序列表(您可以从模拟器本身找到库存的 Android 应用程序的组件名称)。并使用PackageManager来查找组件是否存在。如果是这样,explicit您将不会收到IntentChooser. 如果组件不存在,则发送implicit意图。

您可以从此处了解有关意图的更多信息。

确定当前设备上是否存在 Activity?- 这篇文章将帮助您查找目标组件是否存在。

于 2012-10-23T07:07:44.760 回答