分享简单的数据

来源:互联网 发布:php打印数组到文件 编辑:程序博客网 时间:2024/05/22 06:43

使用Intent分享简单的数据

 可以使用Intent将见得数据分享懂啊社交网络中。比如新闻阅读类应用,可以将将一条链接发送其他社交网络中。使用Intent反响简答的数据,首先要将数据存到Intent中,将动作设为ACTION_SEND,然后设置数据类型。

Intent sendIntent = new Intent();sendIntent.setAction(Intent.ACTION_SEND);sendIntent.putExtra();sendInten.setType();startActvitiy(sendIntent);

 putExtra接受两个参数,第一参数表示数据的名字,从Intent中取数据的时候用这个名字,第二个参数就是你想要传递的值。要将数据分享到其他应用,第一个参数要使用系统系统的名称,具体值可查询Intent源码或文档。应为其他应用取出数据时是按照这些名字取的,如果使用自定义的名字,其他应用无法取出有效数据。同样,你的应用要从取出Intent中的数据,也要用系统提供的名称。
 setType(),设置数据类型,具体类型可以查看文档.
 下面代码展示分享一段文本内容

Intent sendIntent = new Intent();sendIntent.setAction(Intent.ACTION_SEND);sendIntent.putExtra(Intent.EXTRA_TEXT,"hello,I am the text to send!");sendIntent.setType("text/plain");startActivity(sendIntent);

如果用户安装的应用能相应ACTION_SEND动作,并且MIME 类型匹配(“text/plain”),系统会启动这个应用,如果有多个应用匹配,则弹出一个列表工用户选择。

分享多条数据

 使用ACTION_SEND_MULTIPLE发送多条数据。假如要分享三张JPEG图片,MIME类型设为"iamge/jpeg",如果有几种不同类型的图片(android 支持的图片类型有JEPG,PNG,GIF等)MIME 类型设为iamge/*.下面代码展示分享三张图片

ArrayList<Uri> iamgeUris = new ArrayList<Uri>();imageUris.add(imageUri1);imageUris.add(imageUri2);iamgeUris.add(imageUri3);Intent shareIntent = new Intent();shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,imageUris);shareIntent.setType("image/*);startActivity(shareIntent)

接收其他应用的数据

 我们可以将数据发送到其他应用,也可一接受其他应用的数据。发送数据数据使用Intent,接收数据,就是接收Intent,在发送数据时,设置了Intent的动作,数据类型,类别以及数据。但是我们无法直接获取数据,先要获取Intent,在从Intent中读取数据。
 我们并不知道其他应用会发送什么样的Intent,但是我们知道我们想要获取的数据类型,我们能处理的数据类型以及响应的动作。我们可以设置条件,来过滤Intent,只有符合我们条件的Intent才能启动我们的应用。android提供了Intent Filter(意图过滤器)来实现过滤功能。
 使用Intent Filter ,在AndroidManifest.xml文件中添加Intent Filter标签即可,根据需要设置过滤器。很多应用既可以分享链接,也可分享图片,说明一个应用可以有多个Intent Filter.
 下面代码设置两个Intent Filter,一个用来接收一张图片,一个用来接受文本.

<activity     android:name=.MainActivity"    android:label="MainActiity">    <intent-filter>        <action android:name="android.intent.action.SEND" />        <category android:name="android.intent.category.DEFAULT" />        <data android:mimeType="image/*" />    </intent-filter>    <intent-filter>        <action android:name="android.intent.action.SEND" />        <category android:name="android.intent.category.DEFAULT" />        <data android:mimeType="text/plain" />    </intent-filter></activity> 

设置好Intent Filter后,每当有应用使用隐式Intent时,系统会在查询安装应用的AndroidManifest文件中的Intent Filter,如果该Intent能够通过我们的Intent Filter。系统启动应用。接下来该在我们的应用中处理Intent中携带的数据。
 在设置Intent Filter的Activity中获取传过来的Intent ,使用getIntent(),即可获取Intent,在从Intent中取出数据。
 下面代码处理获取的Intent
 

//获取Intent,Intent intent = getIntent();String action = intent.getAction();//Intent的动作String type = intent.getType();//Intent携带的数据类型if (Intent.ACTION_SEND.equals(action) && type != null){      if ("text/plain".equals(type)){             handlerText(intent);       }else if (type.startsWith("image/")){             handlerImage(intent);       } }
0 0
原创粉丝点击