zoukankan      html  css  js  c++  java
  • Android调用系统分享功能总结

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

    实现分享功能的几个办法


    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

    博客原文:>>>> https://www.jianshu.com/p/0a0e2258b3d6
    非常感谢原文作者的分享。如有侵犯,请联系作者QQ337081267删除

    个人博客:http://wintp.top

    补充

    同时分享图片和文字

    private void share(String content, Uri uri){
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        if(uri!=null){
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
            shareIntent.setType("image/*");
            //当用户选择短信时使用sms_body取得文字
            shareIntent.putExtra("sms_body", content);
        }else{
            shareIntent.setType("text/plain");
        }
        shareIntent.putExtra(Intent.EXTRA_TEXT, content);
        //自定义选择框的标题
        startActivity(Intent.createChooser(shareIntent, "邀请好友"));
        //系统默认标题
    
    }

    之所以这种方法可以传递图片,是因为shareIntent.setType(“image/* “),而 setType(“image/* “)可以传递文字也可以传递图片;其中图片内容可以由Uri指定,注意需要将图片的url转换成uri

    参考文章:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1103/1893.html

  • 相关阅读:
    在vs 2012 中使用xna 4.0 做开发!
    MVC如何分离Controller与View在不同的项目?
    Shader Compilation for Multiple Platforms
    文件已损坏,请移至废纸篓的解决办法!
    javascript学习笔记[6]面向对象
    javascript学习笔记[3]流程控制
    [tonyLp]百度地图API开发实践(1)
    javascript学习笔记[7]内建对象
    javascript学习笔记[5]函数(2)
    javascript学习笔记[1]变量
  • 原文地址:https://www.cnblogs.com/shaofeer/p/11154356.html
Copyright © 2011-2022 走看看