如何在没有动画选择器的情况下使用短信附加图像?

时间:2012-10-23 06:35:18

标签: android action send

我必须在点击按钮时附加带有短信的图像文件我使用此代码

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,电子邮件,消息等行动的选择器。 但我不想要任何chosser视图,它将直接显示附加文件的消息意图。

1 个答案:

答案 0 :(得分:2)

使用implicit意图无法完成您要查找的内容。因为这就是Android系统设计用于处理隐式意图的方式。如果您希望特定应用程序处理您的意图,则必须使它们explicit,即指定必须处理意图的组件。但是,当您使用explicit意图来处理任何情况(例如您的情况)时,当目标设备中不存在特定组件(即应用程序)时,您的应用程序很有可能会中断。 Android正被几家原始设备制造商采用,因此他们每个人都倾向于用他们自己的替换库存消息应用程序。因此,在一台设备上运行的功能可能无法正常工作。

如果您想达到您想要的效果,那么您可能需要在各种设备上获取Messaging应用程序列表(您可以从模拟器本身找到该应用程序的Android应用程序组件名称)。并使用PackageManager查找组件是否存在。如果是,则开始和explicit意图,您将不会收到IntentChooser。如果该组件不存在,则发送implicit意图。

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

Determining if an Activity exists on the current device? - 这篇文章将帮助您查找目标组件是否存在。