Android-分享给抖音好友or群
分享到抖音好友/群是指第三方App通过接入该功能,让用户可以从App分享信息到抖音联系人页面。目前该功能支持的内容格式为单图及链接
注:支持分享的最低抖音版本为11.4.0
android R之后,对于存储到app私有目录下面的文件是不允许分享到别的app的,所以分享到抖音的功能可能会失效,请开发者及时针对这种情况进行适配。既可以将要分享的文件存储到公开可访问的目录,也可以使用FileProvider的方式对分享的文件路径进行临时授权。使用FileProvider方式临时授权可以参考《android 分享支持FileProvider的方式》。
建议开发者针对 Android 7.0 版本及以上设备,判断抖音版本支持的情况下,更新为 FileProvider 的方式进行分享。详情查阅《android分享支持FileProvider方式》
第一步:权限申请
向抖音短视频申请你的clientkey及相关权限请到开发者应用登记页面进行申请,申请后将获得clientkey, 之后通过clientkey为应用申请相关的权限,如分享到抖音联系人/群(im.share)等;审核通过后即可使用相关的功能;
第二步:集成到开发环境
目前初步支持了bintray平台发布aar包,因账号管理初期可能会有一些变动,请留意官网更新。
//gradle文件中添加:
repositories {
maven { url "http://maven.byted.org/repository/android_public/" }
}
dependencies {
implementation 'com.bytedance.ies.ugc.aweme:opensdk-china-external:0.1.3.0'
implementation 'com.bytedance.ies.ugc.aweme:opensdk-common:0.1.3.0'
}
第三步:接入步骤
- 环境准备 接入分享到IM功能前请确保sdk环境已配置完毕且获取了相关权限;具体请查阅文档安卓接入指南;
- 初始化 在Application中,初始化DouYinOpenApiFactory
@Override public void onCreate() {
super.onCreate();
String clientkey = "[Client Key]"; // 修改为在开发者应用登记页面申请的clientkey
DouYinOpenApiFactory.init(new DouYinOpenConfig(clientkey));
}
- Manifest中申请权限,注册接收回调activity
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//如果第三方自定义了接收回调的activity则可以跳过此步骤
<activity
android:name=".douyinapi.DouYinEntryActivity"
android:launchMode="singleTask"
android:taskAffinity="你的包名"
android:exported="true">
</activity>
3. 分享单张图片或html
DouYinOpenApi douyinOpenApi = DouYinOpenApiFactory.create(this);
// 初始化资源路径,路径请提供绝对路径
ShareToContact.Request request = new ShareToContact.Request();
ArrayList<String> mUri = new ArrayList<>();
mUri.add ...// 注意: 只能传入一张图片,目前只支持单图且为本地图片 //分享单图
ImageObject imageObject = new ImageObject();
imageObject.mImagePaths = mUri;
MediaContent mediaContent = new MediaContent();
mediaContent.mMediaObject = imageObject;
request.mMediaContent = mediaContent;
// 判断是否可以分享到联系人 if (douyinOpenApi.isAppSupportShareToContacts()) {
// 调起分享
douyinOpenApi.shareToContacts(request);
} else {
Toast.makeText(MainActivity.this, "当前抖音版本不支持", Toast.LENGTH_LONG).show();
}
// 分享html
ContactHtmlObject htmlObject = new ContactHtmlObject();
// 你的html链接(必填)
htmlObject.setHtml("https://www.baidu.com");
// 你的html描述(必填)
htmlObject.setDiscription("bbbbbbbb");
// 你的html title(必填)
htmlObject.setTitle("title");
// 你的html的封面图(远程图片) (选填,若不填,则使用开放平台官网申请时上传的图标)
htmlObject.setThumbUrl("https://tpc.googlesyndication.com/simgad/16034773615176939809?sqp=4sqPyQQ7QjkqNxABHQAAtEIgASgBMAk4A0DwkwlYAWBfcAKAAQGIAQGdAQAAgD-oAQGwAYCt4gS4AV_FAS2ynT4&rs=AOga4qnz29EViShgiSFixrRkn77Pu29abA");
ShareToContact.Request request = new ShareToContact.Request();
request.htmlObject = htmlObject;
// 吊起分享if (douyinOpenApi.isAppSupportShareToContacts()) {
douyinOpenApi.shareToContacts(request);
} else {
Toast.makeText(MainActivity.this, "当前抖音版本不支持", Toast.LENGTH_LONG).show();
}
集成方可自定义接收回调类,例如:request.callerLocalEntry = "com.xxx.xxx...activity"; 接收回调类需实现IApiEventHandler,若无指定则默认回调DouYinEntryActivity
注意:如果您想要分享html链接到抖音联系人,请先到官网管理中心的您应用下的im.share 权限添加分享链接进行页面链接验证,才可以成功分享。
4. 接受返回信息 (DouYinEntryActivity) 包名下创建.douyinapi.DouYinEntryActivity,初始化DouYinOpenApi,实现IApiEventHandler接口,在onResp方法中回调授权结果。 注:douyinapi.前边的package路径需和app的包名一致,否则回调将找不到这个类,也可以选择在传分享参数时,通过request.callerLocalEntry参数来自己指定接收回调的全路径
public class DouYinEntryActivity extends Activity implements IApiEventHandler {
DouYinOpenApi douYinOpenApi;
@Override public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
douYinOpenApi = DouYinOpenApiFactory.create(this);
douYinOpenApi.handleIntent(getIntent(), this);
}
@Override public void onReq(BaseReq req) {
}
@Override public void onResp(BaseResp resp) {
if (resp instanceof ShareToContact.Response) {
ShareToContact.Response response = (ShareToContact.Response) resp;
Toast.makeText(this, "error code:" + resp.errorCode + " error Msg:" + resp.errorMsg, Toast.LENGTH_LONG).show();
finish();
}
}
@Override public void onErrorIntent(@Nullable Intent intent) {
// 错误数据
Toast.makeText(this, "Intent出错", Toast.LENGTH_LONG).show();
}
}
注意,若您的应用的代码存在混淆情况,吊起抖音IM分享之后,不能拿到IM分享结果的回调,请将您接收回调的activity(DouYinEntryActivity或者您自定义的回调activity) 也加入免混淆清单
5. 错误码
错误码 | 描述 |
20000 | 分享成功 |
20001 | 未知错误 |
20003 | 无分享权限(检测一下你的包名和client key是否对应,或有无申请该权限) |
20004 | 用户手动取消登录 |
20005 | 用户未授权使用相册 |
20006 | 网络问题 |
20008 | 图片个数不符合要求或分享图片路径不符合要求 |
20013 | 用户手动取消发布 |
20017 | 无效url |
诚邀您对本文档易读易用性进行评价
好用
不好用