Android原生分享及第三方分享

本文介绍如何为Android应用添加分享功能。包含通过原生Intent和利用第三方SDK。

原生Intent方式

大多平台都支持隐式Intent方式发起分享。

创建隐式 Intent 时,Android 系统通过将 Intent 的内容与在设备上其他应用的清单文件中声明的 Intent 过滤器进行比较,从而找到要启动的相应组件。 如果 Intent 与 Intent 过滤器匹配,则系统将启动该组件,并向其传递 Intent 对象。 如果多个 Intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用。

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");
Intent chooser = Intent.createChooser(sendIntent, "title");
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

这里Action设置为Intent.ACTION_SEND就是分享(发送)的方式。
然后通过putExtra() 方式传递附加信息,可以是文本、图片等。
为了每次分享时都选择平台,需要为Intent包装一个Chooser。
然后就可以启动Activity分享了。

单独集成第三方(微信、微博)SDK

不同的平台有所不同,一般都包括以下流程

  • 注册开发者账号
  • 填写应用信息,获取应用ID,Key等
  • 导入相关SDK依赖
  • 集成分享代码

集成ShareSDK

集成ShareSDK的好处是,提供了统一的接口,抹平了不同平台间API的差异,集成更简单,维护也方便。特别是当你需要集成很多平台的时候。
但是上面单独集成的前两步还是不可缺少。

集成微信分享的一些注意事项

有时会遇到错误{"req":"e","errCode":-6,"transaction":"webpage1498805832655"}

  • 微信分享需要经过签名才可以
  • 微信Android应用信息的签名那一栏需要填入签名的MD5值,通过以下命令获取
keytool -list -v -keystore <你的keystore路径>

keytool 是jdk的自带一个命令,类似javac

  • 签名的MD5值必须全部小写,并去掉冒号
  • 可以在gradle文件中配置以下属性,让开发版本也使用正式签名
android {
    ***
    signingConfigs {
        debug{
            storeFile file("你的keystore路径")
            storePassword "你的storePassword"
            keyAlias "你的keyAlias"
            keyPassword "keyPassword"
        }
        release {
            storeFile file("你的keystore路径")
            storePassword "你的storePassword"
            keyAlias "你的keyAlias"
            keyPassword "你的keyPassword"
        }
    }
    ***
}

有时会遇到错误checkArgs fail, thumbData is invalid

  • 图片太大,可以获取缩略图
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.app_icon);
Bitmap thumb = Bitmap.createScaledBitmap(bmp,THUMB_SIZE,THUMB_SIZE,true);
bmp.recycle();

本文原始发表于:https://wycode.cn/blog/Share 转载请注明出处

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值