采用Intent隐式调用Activity的方法,主要使用Intent.ACTION_SEND和Intent.createChooser();
调用Android系统的分享接口。系统会过滤手机上的具有分享应用的程序,让用户进行选择。如果没有使用Intent.createChooser()则会取系统默认的用户分享方式,只有未设置的情况下才会弹出让用户进行选择。
1、简单的分享文本
1 Intent intent = new Intent(); 2 intent.setAction(Intent.ACTION_SEND);//设定Intent的ACTION 3 intent.putExtra(Intent.EXTRA_TEXT, "YOUR SHARE TEXT");//分享的内容tag和内容 4 intent.setType("text/plain");//标志发送的数据类型,方便接收方进行处理(类型/子类型) 5 startActivity(inten);//使用隐式调用Activity的方法
- 隐式调用Activity的方法
或者
- startActivity(Intent.createChooser(intent, "the chooser dialog title"));//
2、发送图片则使用
- intent.putExtra(Intent.EXTRA_STREAM, imageUri);
- intent.setType("imag/*");//*可以为jpg,png等等
3、也可以同时分享一组数据
1 List<Uri> uris; 2 Intent intent = new Intent(); 3 intent.setAction(Intent.ACTION_SED_MULTIPLE);//发送组 4 intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 5 intent.setType("*/*");//如果都是视频则video/* 6 startActivity(intent);
如果想让应用进入弹出来的分享列表则需要在mainifest中activity添加intent-filter:
例子:
1 <intent-filter> 2 <action android:name="android.intent.action.SEND" /> 3 4 <category android:name="android.intent.category.DEFAULT" /> 5 6 <data android:mimeType="image/*" /> 7 </intent-filter> 8 <intent-filter> 9 <action android:name="android.intent.action.SEND" /> 10 11 <category android:name="android.intent.category.DEFAULT" /> 12 13 <data android:mimeType="text/plain" /> 14 </intent-filter> 15 <intent-filter> 16 <action android:name="android.intent.action.SEND_MULTIPLE" /> 17 18 <category android:name="android.intent.category.DEFAULT" /> 19 20 <data android:mimeType="image/*" /> 21 </intent-filter>
在接收的activity里面接收
1 Intent intent = getIntent(); 2 String action = intent.getAction();//对应intent.setAction() 3 String type = intent.getType();//对应intent.setType() 4 inten.get???Extra(Intent.EXTRA_???)或者intent.getParcelableExtra(Intent.EXTRA_STREAM);
也可以把分享放到ActionBar里面。