搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 超光速 > Android分享---调用系统自带的分享功能

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

超光速 2018-02-28

实现分享功能的几个办法


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);

效果如下:


分享到QQ

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

源码参考

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

https://github.com/jiangkang/KTools


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Android分享---调用系统自带的分享功能》的版权归原作者「超光速」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注超光速微信公众号

超光速微信公众号:jk3012204331

超光速

手机扫描上方二维码即可关注超光速微信公众号

超光速最新文章

精品公众号随机推荐