Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39007
  • 博文数量: 25
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-28 17:38
文章分类
文章存档

2013年(25)

我的朋友

分类: Android平台

2013-04-15 16:12:25

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所示。
阅读(528) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~