运用 Android 系统自带分享功能
2016-09-22 本文已影响7256人
TTTqiu
1. 设置 Intent
的 action
为 Intent.ACTION_SEND
。
2. 把要分享的数据通过 .putExtra()
传入 intent
。
3. 设置类型 .setType()
。
4. startActivity()
。
- 系统会自动识别出能够兼容接受这些数据,且类型相符合的 activity。如果这些选择有多个,则把这些 activity 显示给用户进行选择。
- 若要响应其他应用的分享,在
AndroidManifest
里设置<intent-filter>
。
5. 如果为intent
调用了Intent.createChooser()
,那么 Android 总是会显示可供选择。这样有一些好处:
- 即使用户之前为这个 intent 设置了默认的 action,选择界面还是会被显示。
- 如果没有匹配的程序,Android 会显示系统信息。
- 我们可以指定选择界面的标题。
1. 分享文本内容
Intent intent1=new Intent(Intent.ACTION_SEND);
intent1.putExtra(Intent.EXTRA_TEXT,"This is my text to send");
intent1.setType("text/plain");
startActivity(Intent.createChooser(intent1,"share"));
2. 分享二进制内容(如图片等)
Intent intent2=new Intent(Intent.ACTION_SEND);
Uri uri=Uri.fromFile(new File("/storage/emulated/0/pictures/1474533294366.jpg"));
intent2.putExtra(Intent.EXTRA_STREAM,uri);
intent2.setType("image/*");
startActivity(Intent.createChooser(intent2,"share"));
3. 分享多块内容
ArrayList<Uri> imageUris = new ArrayList<Uri>();
Uri imageUri1=Uri.fromFile(new File("/storage/emulated/0/pictures/1474533294366.jpg"));
Uri imageUri2=Uri.fromFile(new File("/storage/emulated/0/UCDownloads/pictures/319534.jpg"));
imageUris.add(imageUri1);
imageUris.add(imageUri2);
Intent intent3 = new Intent();
intent3.setAction(Intent.ACTION_SEND_MULTIPLE);
intent3.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
intent3.setType("image/*");
startActivity(Intent.createChooser(intent3, "share"));