注:该实例为AndroidStudio的项目
由于项目需要,研究了一下友盟提供的分享接口,接下来记录一下集成及接口调用的相关步骤
在友盟官网下载Android相关的sdk,这里以精简版qq、精简版新浪微博、完整版微信为例,解压之后:
文件夹介绍:
common基础库是使用所有友盟+ SDK都必须包含的基础组件
share是分享功能用到的组件
thirdparties是第三方登录的组件(这个留到下一篇去讲)
然后share文件夹中找到如下目录:
文件夹介绍:
main————为核心包,必须添加
platforms————为平台包,是您选择的各个平台的jar和资源
shareboard————分享面板包,如果不使用,可以不拷贝
shareview————分享编辑页,如果没有使用新浪精简版,豆瓣人人腾讯微博,可以不使用该文件夹
还有一个签名文件,那是默认的debug版,用于调试
最简单的方式就是啥都别讲究,直接将三个文件夹内的所有jar都导入进你自己项目的“libs”文件夹中(我这列表里包含第三方登录的jar)
然后将之前提到的debug版的签名文件复制到“app”文件夹下
还有一些图片还有layout什么的,全都放到项目对应的目录下
文件算是处理完了,下面开始初始化代码部分
在工程的build.gradle文件中dependencies下加入
implementation files('libs/SocialSDK_QQ_Simplify.jar')
implementation files('libs/SocialSDK_Sina_Simplify.jar')
implementation files('libs/SocialSDK_WeiXin_Full.jar')
implementation files('libs/umeng_social_api.jar')
implementation files('libs/umeng_social_net.jar')
implementation files('libs/umeng_social_shareview.jar')
implementation files('libs/umeng_social_tool.jar')
简单一点也可以用以下方式,二选一就行了:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
然后在build.gradle文件的android节点下添加:
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
buildTypes {
release {
// 是否进行混淆
minifyEnabled false
// 混淆文件的位置
signingConfig signingConfigs.debug
proguardFiles 'proguard-rules.pro'
}
debug {
minifyEnabled false
signingConfig signingConfigs.debug
proguardFiles 'proguard-rules.pro'
}
}
这一步操作是为了把签名文件的密码打包进去,这种写法在实际项目中会将签名文件的密码暴露在版本控制中,所以,建议不要直接写密码,可以试试这种写法“用Gradle构建时,将密码等敏感信息放在build.gradle之外”(这个我暂时还没有做实际的测试使用,你们可以先试试看)
然后处理AndroidManifest.xml文件中的代码,添加要用到的权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
在
节点下添加以下代码:
<meta-data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >
meta-data>
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity
android:name=".WBShareActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/>
<category android:name="android.intent.category.DEFAULT"/>
intent-filter>
activity>
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="false"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
activity>
<activity
android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="false"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
activity>
<activity
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
intent-filter>
activity>
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="tencent100424468"/>
intent-filter>
activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity
android:name="com.umeng.socialize.editorpage.ShareActivity"
android:excludeFromRecents="true"
android:theme="@style/Theme.UMDefault"
/>
创建Application文件,进行组件的初始化(记得在
内声明name),具体代码是:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
UMShareAPI.get(this);
Config.DEBUG = true;
}
{
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com/sina2/callback");
}
}
第一个参数是各开放平台的key,第二个是密钥,新浪微博那个第三个参数是回调地址;正式使用时要换成自己申请的数据
新建activity “.wxapi.WXEntryActivity”和“WBShareActivity”
下面就可以在主activity中使用接口了,
new ShareAction(MainActivity.this).withText("hello").setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN,SHARE_MEDIA.WEIXIN_CIRCLE)
.setCallback(shareListener).open();
分享回调函数
private UMShareListener shareListener = new UMShareListener() {
/**
* @descrption 分享开始的回调
* @param platform 平台类型
*/
@Override
public void onStart(SHARE_MEDIA platform) {
}
/**
* @descrption 分享成功的回调
* @param platform 平台类型
*/
@Override
public void onResult(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(MainActivity.this, "失败" + t.getMessage(), Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享取消的回调
* @param platform 平台类型
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show();
}
};
收工!
另:如果是为了测试走通分享功能,而不是直接植入正式项目,可以用博文里的各平台key值和密钥等,不过需要包名一致“com.umeng.soexample”
有什么疑问可以留言