不使用第三方 SDK 实现简单分享 -- Android 学习之路

sky-mxc 总结 转载注明:https://sky-mxc.github.io

不使用第三方 SDK 实现简单分享

现在在Android系统中进行分享,主要有两种手段,一种是通过系统自带的来启动分享功能;第二种是通过第三方的SDK插件进行分享;今天先来看看系统自带的分享功能:Intent.ACTOIN_SEND;

  • 分享文本
  • 分享图片+文本 (QQ和微信不支持,只能将图片和文本分两次分享,目前来看只有新浪微博支持)
  • 分享多图片 (和上面一样 ,目前只有新浪微博可以同时分享图片和文本)
  • 分享图片+文本至微信朋友圈

分享存文本内容

private void share() {
    /** * 简单分享 * 让用户去选择分享平台 * 只分享简单的文子 */
    String context = etContext.getText().toString();
    intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_TEXT,context);
    if(hasApplication(intent)){
        //没有默认选项 可以自定义dialog标题
        startActivity(Intent.createChooser(intent,"分享一下"));
        //系统默认主题
        // startActivity(intent);
    }
}

在分享之前可以先查看一下手机上是否有分享平台,如果没有就给出提示可以增加用户友好度,通过 PackageManager的queryIntentActivities()查看是否有匹配intent的Activity

/** * 判断是否存在intent要启动的Activity * @param intent * @return */
private boolean hasApplication(Intent intent){

    //查询是否有该intent要启动的Activity
    List<ResolveInfo> resolveInfos= getPackageManager().queryIntentActivities(intent,0);
    log(resolveInfos.size()+"");
    return  resolveInfos.size()>0?true:false;
}

另外 使用 Intent.createChooser()可以避免出现默认程序的可能,还可以定义弹出框的标题 ,友好程度更好一些,下面看一下两者的区别

系统默认的主题( startActivity(intent))

使用 Intent.createChooser()


分享文本+图片

图片和文本一起分享 目前我测试的只有微博好使 ,QQ和微信 都只能分享图片,不接受文本

/** * 分享图片 和文本 * QQ 微信 不能图片和文本一起分享 * 微博可以实现图片和文本一起分享 */
private void shareChooser() {
    String context = etContext.getText().toString();

    intent = new Intent(Intent.ACTION_SEND);
    intent.setType("image/*");
    intent.putExtra(Intent.EXTRA_TEXT,context);
    intent.putExtra(Intent.EXTRA_STREAM,uri);
    if (hasApplication(intent)){
        startActivity(Intent.createChooser(intent,"选择要分享到的平台吧"));
    }
}

分享多张图片

和上面一样 我测试 只有微博能同时分享图片和文本

/** * 分享多个图片 * 目前来看 只有微博能同时分享文本和内容 */
private void sharePhototMult() {
    ArrayList<Uri> uris =new ArrayList<>();
    uris.add(uri);
    uris.add(uri);
    intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    intent.setType("image/*");
    intent.putExtra(Intent.EXTRA_TEXT,"分享内容测试");
    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uris);
    if(hasApplication(intent)){
        startActivity(Intent.createChooser(intent,"选择分享平台"));
    }
}

分享 图片+文本到微信朋友圈

这个方式可以实现 图片+ 文本同时分享

/** * 分享图片去微信朋友圈 */
private void sharePhotoToWX() {
    String wxPackage = "com.tencent.mm";
    if (checkPackage(wxPackage)){
        intent = new Intent(Intent.ACTION_SEND);

        intent.setClassName(wxPackage,"com.tencent.mm.ui.tools.ShareToTimeLineUI");
        intent.setType("image/*");
        intent.putExtra("Kdescription","朋友圈分享测试");
        intent.putExtra(Intent.EXTRA_STREAM,uri);
        startActivity(intent);

    }else{
        Toast.makeText(this,"微信不存在",Toast.LENGTH_SHORT).show();
    }
}

转载于:https://my.oschina.net/skymxc/blog/799133

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值