1、 下载 ShareSDK, 进入 Share SDK for Android 下的 Libs 下的 MainLibs/libs 文件夹,将不需要的分享 jar 文件删除,其中 核心 jar 包 ShareSDK-Core 不能删;
2、 完了之后,将 修改后的 MainLibs 和 OneKeyShare 复制到待开发的项目相同父目录下;
3、 将 代开发的项目 和 MainLibs 以及 OneKeyShare 一起导入 eclipse 中;
4、 将 Share SDK for Android/Res 目录下的 ShareSDK.xml 文件复制到 assets 目录下;
5、 在 ShareSDK.xml 下, 将 <ShareSDK AppKey = "xxxxx"/> 中的 xxxx 替换为你在ShareSDK.cn 官网申请的 AppKey
6、 进入 http://connect.qq.com/intro/login/ 创建 移动应用, 并将获取到的 APP ID 和 APP KEY 填入 ShareSDK.xml 文件中,并在 管理中心 -> 平台信息 中写入对应的包名、签名、类名、下载地址等,最后保存。
7、 同理,进入http://dev.t.qq.com 创建 无线应用,并将获取到的App Key 和 App Secret 填入 ShareSDK.xml 文件中;
8、 同理,进入 http://open.weibo.com/ 创建 移动应用,将获取到App Key 和 App Secret 填入 ShareSDK.xml 文件中, 然后进入管理中心,在基本信息栏中写入 Android 包名, Android 签名(eclipse -> Window -> preference -> Android -> build 下的 MD5 fingerprint ,去掉冒号,改为小写), 其他可随便填写,但要合法,最后保存; 然后进入 高级信息 -> OAuth2.0 授权设置 -> 编辑 ,在授权回调页和取消授权回调页 中写入合法的 url 地址; 最后进入 测试帐号 -> 编辑 -> 填入新浪微博帐号名称, (可以 @ 的昵称)最后保存即可;
PS: ShareSDK.xml 中新浪微博 和 腾讯微博 下的 RedirectUri 属性需要与创建应用时的 应用网址 和 授权回调页 对应,否则会出现授权错误
9、最后配置 AndroidMenifest.xml 文件,添加权限信息
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
和 一个 Activit 信息
<activity
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
10、最后监听某个控件,在 public void onClick(View view) 下实现授权操作如下,例如
findViewById(R.id.button).setOnClickListener(this);
// ...
public void onClick(View view){
switch(view.getId())
case button:
Platform platform = ShareSDK.getPlatform(this,QZone.NAME);// 如果是新浪微博则为 SinaWeibo.NAME,腾讯微博则为 TencentWeibo.NAME
platform.setPlatformActionListener(new PlatformActionListener() {
@Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
handler.sendEmptyMessage(ERROR);
Log.e(TAG,arg2.getMessage());
}
@Override
public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
handler.sendEmptyMessage(COMPLETE);
}
@Override
public void onCancel(Platform arg0, int arg1) {
handler.sendEmptyMessage(CANCLE);
}
});
platform.authorize();
break;
}
// 因为回调接口运行在非 UI 线程中,所以不能在里面处理 UI 操作,所以在里面用 handler 将消息发送到主线程进行处理最后定义一个 Handler 用于处理 Message
Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch(msg.what){
case ERROR:
//...
case COMPLETE:
//...
case CANCLE:
//...
}
}
}
其中 ERROR 、COMPLETE、CANCLE 是 常量,可如下定义:
private final int ERROR = 0;
private final int COMPLETE = 1;
private final int CANCLE = 2;
至此,不出意外的话应该是可以的实现授权操作的了。