当前位置: 代码迷 >> 综合 >> 安卓调用系统分享
  详细解决方案

安卓调用系统分享

热度:97   发布时间:2023-09-05 17:56:49.0

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

   Intent textIntent = new Intent(Intent.ACTION_SEND);textIntent.setType("text/plain");textIntent.putExtra(Intent.EXTRA_TEXT, "这是一段分享的文字");startActivity(Intent.createChooser(textIntent, "分享"));

分享单张图片

String path = getResourcesUri(R.drawable.shu_1);Intent imageIntent = new Intent(Intent.ACTION_SEND);imageIntent.setType("image/jpeg");imageIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path));startActivity(Intent.createChooser(imageIntent, "分享"));

分享多个文件

   ArrayList<Uri> imageUris = new ArrayList<>();Uri uri1 = Uri.parse(getResourcesUri(R.drawable.dog));Uri uri2 = Uri.parse(getResourcesUri(R.drawable.shu_1));imageUris.add(uri1);imageUris.add(uri2);Intent mulIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);mulIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);mulIntent.setType("image/jpeg");startActivity(Intent.createChooser(mulIntent,"多文件分享"));

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

 private String getResourcesUri(@DrawableRes int id) {Resources resources = getResources();String uriPath = ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +resources.getResourcePackageName(id) + "/" +resources.getResourceTypeName(id) + "/" +resources.getResourceEntryName(id);Toast.makeText(this, "Uri:" + uriPath, Toast.LENGTH_SHORT).show();return uriPath;

指定分享到微信

Intent wechatIntent = new Intent(Intent.ACTION_SEND);wechatIntent.setPackage("com.tencent.mm");wechatIntent.setType("text/plain");wechatIntent.putExtra(Intent.EXTRA_TEXT, "分享到微信的内容");startActivity(wechatIntent);

指定分享到QQ

   Intent qqIntent = new Intent(Intent.ACTION_SEND);qqIntent.setPackage("com.tencent.mobileqq");qqIntent.setType("text/plain");qqIntent.putExtra(Intent.EXTRA_TEXT, "分享到微信的内容");startActivity(qqIntent);

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

  相关解决方案