Android分享---调用系统自带的分享功能

实现分享功能的几个办法


1.调用系统的分享功能
2.通过第三方SDK,如ShareSDK,友盟等
3.自行使用各自平台的SDK,比如QQ,微信,微博各自的SDK

这里就记录下第一种办法。

分享文本信息

 
  1. Intent textIntent = new Intent(Intent.ACTION_SEND);

  2. textIntent.setType("text/plain");

  3. textIntent.putExtra(Intent.EXTRA_TEXT, "这是一段分享的文字");

  4. startActivity(Intent.createChooser(textIntent, "分享"));

效果如下图:

分享文本信息

分享单张图片

 
  1. String path = getResourcesUri(R.drawable.shu_1);

  2. Intent imageIntent = new Intent(Intent.ACTION_SEND);

  3. imageIntent.setType("image/jpeg");

  4. imageIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path));

  5. startActivity(Intent.createChooser(imageIntent, "分享"));

分享多个文件

 
  1. ArrayList<Uri> imageUris = new ArrayList<>();

  2. Uri uri1 = Uri.parse(getResourcesUri(R.drawable.dog));

  3. Uri uri2 = Uri.parse(getResourcesUri(R.drawable.shu_1));

  4. imageUris.add(uri1);

  5. imageUris.add(uri2);

  6. Intent mulIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);

  7. mulIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);

  8. mulIntent.setType("image/jpeg");

  9. startActivity(Intent.createChooser(mulIntent,"多文件分享"));

上面几个例子的效果都是一样的,创建一个选择器,让用户自己选择分享到哪里。
这里有一点得注意,就是通过这种方法进行分享,Intent传递的数据的Type(就是setType()方法)一定要控制好,不然会出错。(至于为什么后面说)。
其中由于是分享的res中的图片,故转变为uri,方法在这:

 
  1. private String getResourcesUri(@DrawableRes int id) {

  2. Resources resources = getResources();

  3. String uriPath = ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +

  4. resources.getResourcePackageName(id) + "/" +

  5. resources.getResourceTypeName(id) + "/" +

  6. resources.getResourceEntryName(id);

  7. Toast.makeText(this, "Uri:" + uriPath, Toast.LENGTH_SHORT).show();

  8. return uriPath;

  9. }

指定分享到微信

 
  1. Intent wechatIntent = new Intent(Intent.ACTION_SEND);

  2. wechatIntent.setPackage("com.tencent.mm");

  3. wechatIntent.setType("text/plain");

  4. wechatIntent.putExtra(Intent.EXTRA_TEXT, "分享到微信的内容");

  5. startActivity(wechatIntent);

效果如下:

分享到微信

指定分享到QQ

 
  1. Intent qqIntent = new Intent(Intent.ACTION_SEND);

  2. qqIntent.setPackage("com.tencent.mobileqq");

  3. qqIntent.setType("text/plain");

  4. qqIntent.putExtra(Intent.EXTRA_TEXT, "分享到微信的内容");

  5. startActivity(qqIntent);

效果如下:

分享到QQ

注意:文章省略了6.0的动态权限,与7.0的FileProvider的适配细节,请自行添加。

源码参考


KTools/app/src/main/java/com/jiangkang/ktools/share/ShareActivity.kt

猜你喜欢

转载自blog.csdn.net/suyimin2010/article/details/82525444