安卓ShareSDK第三方登录与分享
先上图:
1、注册mob账号 http://reg.mob.com/
2、添加应用
2.1、ShareSDK-社会化平台设置-对应平台-填入APP ID,App Key
2.2、SDK下载 地址: http://www.mob.com/
版本说明 V3.1.2 2017-12-05
红色箭头部分选择其他平台
2.3、解压后进入“ShareSDK for Android”,双击QuickIntegrater.jar 填入项目名称与包名
点击“确定”,生成一个ShareSDKdEMO的文件夹,程序会自动搜集集成SDK所需要的jar和资源。完成以后可以通过复制目标目录中的文件到您项目中覆盖,当然很多并不是程序所需要的自行删除
3、代码部分
3.1、打开ShareSDK.xml文件 ,这里只对QQ进行测试,其他平台类似
3.1、新建wxapi包,复制刚刚生成ShareSDKdEMO中src-com中的WXEntryActivity类不做修改
package wxapi;import android.content.Intent;
import android.widget.Toast;
import cn.sharesdk.wechat.utils.WXAppExtendObject;
import cn.sharesdk.wechat.utils.WXMediaMessage;
import cn.sharesdk.wechat.utils.WechatHandlerActivity;/** 微信客户端回调activity示例 */
public class WXEntryActivity extends WechatHandlerActivity {/*** 处理微信发出的向第三方应用请求app message* * 在微信客户端中的聊天页面有“添加工具”,可以将本应用的图标添加到其中* 此后点击图标,下面的代码会被执行。Demo仅仅只是打开自己而已,但你可* 做点其他的事情,包括根本不打开任何页面*/
public void onGetMessageFromWXReq(WXMediaMessage msg) {if (msg != null) {Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());startActivity(iLaunchMyself);}}/*** 处理微信向第三方应用发起的消息* * 此处用来接收从微信发送过来的消息,比方说本demo在wechatpage里面分享* 应用时可以不分享应用文件,而分享一段应用的自定义信息。接受方的微信* 客户端会通过这个方法,将这个信息发送回接收方手机上的本demo中,当作* 回调。*
* 本Demo只是将信息展示出来,但你可做点其他的事情,而不仅仅只是Toast*/
public void onShowMessageFromWXReq(WXMediaMessage msg) {if (msg != null && msg.mediaObject != null&& (msg.mediaObject instanceof WXAppExtendObject)) {WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();}}
}
3.2、AndroidManifest.xml 清单文件
**注意:
android:name=”com.mob.MobApplication”
1、若有自己Application就继承MobApplication
2、不继承就在初始化的时候 ShareSDK.initSDK(Context,”sharesdk的appkey”);
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.helloword.sharesdkdemo"><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><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.RECEIVE_SMS" /><application
android:name="com.mob.MobApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />intent-filter>activity><activity
android:name="com.mob.tools.MobUIShell"android:configChanges="keyboardHidden|orientation|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:windowSoftInputMode="stateHidden|adjustResize"><intent-filter><action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /><category android:name="android.intent.category.DEFAULT" />intent-filter><intent-filter><data android:scheme="line.1477692153" /><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.BROWSABLE" /><category android:name="android.intent.category.DEFAULT" />intent-filter><intent-filter><data android:scheme="tencent1106481111" /><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.BROWSABLE" /><category android:name="android.intent.category.DEFAULT" />intent-filter>activity><activity
android:name="cn.sharesdk.tencent.qq.ReceiveActivity"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="tencent1106481111" />intent-filter>activity><meta-data
android:name="22dqq1834dr08"android:value="1eb46a0fad23edbbffc62345dffdfc2c" />application>manifest>
3.3、MainActivity 主布局
package com.helloword.sharesdkdemo;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;import java.util.HashMap;import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.tencent.qq.QQ;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = "MainActivity";private TextView text1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.button1).setOnClickListener(this);findViewById(R.id.button2).setOnClickListener(this);text1 = (TextView) this.findViewById(R.id.text1);}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.button1://登入前判断是否安装客户端,以前博文提到过setLogins(QQ.NAME);break;case R.id.button2:setShare(QQ.NAME);break;}}/*** 第三方分享*/private void setShare(String name) {Platform.ShareParams sp = new Platform.ShareParams();sp.setTitle("标题:Hello Word");sp.setTitleUrl("http://blog.csdn.net/qq_34536167"); // 标题的超链接sp.setText("文本:Hello Word");sp.setImageUrl("分享缩略图片地址");//sp.setSite("发布分享的网站名称"); // Site:QQ空间的字段,标记分享应用的名称//sp.setSiteUrl("http://blog.csdn.net/qq_34536167");Platform qzone = ShareSDK.getPlatform(name);// 设置分享事件回调(注:回调放在不能保证在主线程调用,不可以在里面直接处理UI操作)qzone.setPlatformActionListener(shareListener);// 执行图文分享qzone.share(sp);}/*** 第三方登入*/private void setLogins(String name) {Platform weix = ShareSDK.getPlatform(name);//先移除授权每次都拉取授权页weix.removeAccount(true);//回调信息,可以在这里获取基本的授权返回的信息,但是注意如果做提示和UI操作要传到主线程handler里去执行weix.setPlatformActionListener(shareListener);//网页的第三方登入(是否到进入网页授权)//weix.SSOSetting(true);//authorize与showUser单独调用一个即可//weix.authorize();//单独授权,OnComplete返回的hashmap是空的weix.showUser(null);//授权并获取用户信息}/*** 登入与分享回调写写一起*/public PlatformActionListener shareListener = new PlatformActionListener() {@Overridepublic void onError(Platform arg0, int arg1, Throwable arg2) {arg2.printStackTrace();Log.e(TAG, "onError: 登入失败" + arg2.toString());}@Overridepublic void onComplete(Platform arg0, int arg1, HashMap arg2) {//输出所有授权信息String response = arg0.getDb().exportData();final String PlatformNname = arg0.getDb().getPlatformNname();final String Token = arg0.getDb().getToken();final String TokenSecret = arg0.getDb().getTokenSecret();final String UserGender = arg0.getDb().getUserGender();final String UserIcon = arg0.getDb().getUserIcon();final String UserId = arg0.getDb().getUserId();final String UserName = arg0.getDb().getUserName();final long ExpiresIn = arg0.getDb().getExpiresIn();final long ExpiresTime = arg0.getDb().getExpiresTime();final int PlatformVersion = arg0.getDb().getPlatformVersion();Log.e(TAG, "onComplete所有信息: " + response);Log.e(TAG, "PlatformNname分享的平台: " + PlatformNname);Log.e(TAG, "Token: " + Token);Log.e(TAG, "TokenSecret: " + TokenSecret);Log.e(TAG, "UserGender: " + UserGender);Log.e(TAG, "UserIcon头像地址: " + UserIcon);Log.e(TAG, "UserId: " + UserId);Log.e(TAG, "UserName名字: " + UserName);Log.e(TAG, "ExpiresIn: " + ExpiresIn);Log.e(TAG, "ExpiresTime: " + ExpiresTime);Log.e(TAG, "PlatformVersion: " + PlatformVersion);runOnUiThread(new Runnable() {@Overridepublic void run() {text1.setText("PlatformNname分享的平台: " + PlatformNname +"\nToken: " + Token +"\nTokenSecret: " + TokenSecret +"\nUserGender: " + UserGender +"\nUserIcon头像地址: " + UserIcon +"\nUserId: " + UserId +"\nUserName名字: " + UserName +"\nExpiresIn: " + ExpiresIn +"\nExpiresTime: " + ExpiresTime +"\nPlatformVersion: " + PlatformVersion);}});}@Overridepublic void onCancel(Platform arg0, int arg1) {Log.e(TAG, "onCancel: 登入取消");}};
}
3.4、activity_main.xml 布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.helloword.sharesdkdemo.MainActivity"><Button
android:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="QQ、微博、微信登录" /><Button
android:id="@+id/button2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="20dp"android:layout_marginTop="20dp"android:text="QQ、微博、微信分享" /><TextView
android:id="@+id/text1"android:layout_width="match_parent"android:layout_height="match_parent"android:text="" />LinearLayout>
4、错误码地址:http://wiki.mob.com/%E9%94%99%E8%AF%AF%E7%A0%81%E8%AF%B4%E6%98%8E/
5、扩展部分:使用官方自带九宫格UI
将相关类复制自己项目中
效果图:
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
