Android---把内容发送给另外一个应用程序
在构造Intent对象时,你必须要指定打算要触发的操作。Android系统定义了几个操作,其中包括ACTION_SEND,就像你猜测的一样,这个操作指明了Intent对象要一个Activity向另外一个Activity发送数据,即使是跨进程边界。要把数据发送给另外的Activity,就需要指定数据和对应数据的类型,然后,系统会识别相应的接收该Intent对象的Activity,并把它们显示给用户(如果有多个Activity可选的情况),或者是直接启动相应的Activity(只有一个Activity可选的情况下)。类似的,你可以通过你的应用程序的清单文件来指定你的Activity所能接收的来自其他应用程序的数据类型。
用Intent对象在应用程序之间来发送和接收数据,常用于社交类应用之间的内容共享。Intent允许用户快速而简单的共享信息,以便使用他们所喜爱的应用程序。
注意:添加共享操作的最好方式是使用ShareActionProvider类把共享操作项添加到一个ActionBar中,ShareActionProvider在API Level 14中有效。
发送文本内容
最直接并且最常使用的是ACTION_SEND操作,它会把文本内容从一个Activity发送给其他的Activity。例如,内置的Browser应用能够当前显示页的URL作为文本共享给其他任意应用程序。这对通过电子邮件或社交网络来跟朋友共享文章或站点是有好处的。以下示例就实现了这种类型的共享:
Intent sendIntent =newIntent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);
如果系统安装了拥有ACTION_SEND操作和text/plain的MIME类型的过滤器,那么Android系统就会运行对应的应用程序;如果有多个应用程序跟这个请求匹配,系统就会显示一个选择对话框,在该对话框中允许用户选择一个能够接收该请求的应用程序。如果你调用的是Intent.createChooser()方法,那么Android系统就始终会显示该选择对话框。这样做的好处如下:
1. 即使用户之前针对该Intent选择了默认的操作,该选择对话依然会被显示;
2. 如果没有与之匹配的应用程序,Android系统会显示一个系统消息;
3. 你可以给选择对话框指定一个标题。
以下是对上述代码的更新:
Intent sendIntent =newIntent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));
显示的结果对话框如图1所示。
阅读(518) | 评论(0) | 转发(0) |