100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 友盟的微信登录 QQ 新浪微博登录功能和分享功能

友盟的微信登录 QQ 新浪微博登录功能和分享功能

时间:2019-04-30 03:04:03

相关推荐

友盟的微信登录 QQ 新浪微博登录功能和分享功能

在这里我用的是友盟的登录,需要的请参考本文,直接撸代码,

提示:微信登录在一段时间内,只授权一次(只能调起一次登录页面),除非更换用户,才可以再调起登录页面。

0、本文需要导入jar包导完后鼠标右键Add Library,之后再build gradle中应该是这样的

jar包的地址/download/jing_80/10768648

//友盟compile 'com.umeng.sdk:common:latest.integration'//可能的自己添加implementation files('libs/SocialSDK_Sina_Simplify.jar')implementation files('libs/SocialSDK_QQ_Simplify.jar')implementation files('libs/SocialSDK_WeChat_Simplify.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')

1、添加权限(还是老样子,缺什么权限,自己添加呢)

<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" />

2、manifest中添加

<!--基本信息配置--><meta-dataandroid:name="UMENG_APPKEY"android:value="友盟APPKey" /><meta-dataandroid:name="UMENG_CHANNEL"android:value="可甜可盐(如果无多渠道打包,可不填)" /><!--微信--><activityandroid:name=".wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><!--新浪--><activityandroid:name="com.umeng.socialize.media.WBShareCallBackActivity"android:configChanges="keyboardHidden|orientation"android:exported="false"android:theme="@android:style/Theme.Translucent.NoTitleBar"></activity><activityandroid:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"android:configChanges="keyboardHidden|orientation"android:exported="false"android:windowSoftInputMode="adjustResize" /><activityandroid:name="com.sina.weibo.sdk.share.WbShareTransActivity"android:launchMode="singleTask"android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"><intent-filter><action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity><!--QQ--><activityandroid: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" /><!--填应用的Appid--><data android:scheme="tencentxxxxxxxx" /></intent-filter></activity><activityandroid:name="com.mon.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar" />

3、在application中注册自己的App(像这样)

<applicationandroid:name=".utils.App"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">

4、App中的内容

public class App extends Application {public static AppCompatActivity context;@Overridepublic void onCreate() {super.onCreate();// 友盟分享UMConfigure.init(this, "友盟Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, null);}{//这些值在各个开发平台注册应用时,会提供的,去相应的开发平台找就可以了PlatformConfig.setWeixin("Appid微信平台有", "secret找项目经理要");PlatformConfig.setQQZone("id", "key值");PlatformConfig.setSinaWeibo("key", "secret", "");}}

5、在wxapi包下建类WXEntryActivity,一定得是wxapi包下,类中什么都不用写,umeng帮我们封装好了

import com.umeng.weixin.callback.WXCallbackActivity;public class WXEntryActivity extends WXCallbackActivity {}

6、动态权限,手机大于6.0可能需要用到,

if (Build.VERSION.SDK_INT >= 23) {String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CALL_PHONE, Manifest.permission.READ_LOGS, Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.SET_DEBUG_APP, Manifest.permission.SYSTEM_ALERT_WINDOW, Manifest.permission.GET_ACCOUNTS, Manifest.permission.WRITE_APN_SETTINGS};ActivityCompat.requestPermissions(this, mPermissionList, 123);}

登录

7、在哪个页面实现登录,就在哪里写这些代码

private UMAuthListener umAuthListener = new UMAuthListener() {@Overridepublic void onStart(SHARE_MEDIA platform) {//授权开始的回调}@Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> map) {Toast.makeText(getApplicationContext(), "Authorize succeed", Toast.LENGTH_SHORT).show();// String uid = map.get("uid");//获取用户id// String name = map.get("name");//获取用户昵称// String gender = map.get("gender");//获取用户性别// String iconurl = map.get("iconurl");//获取用户头像地址String openid = map.get("openid");Log.d("ThirdActivity", openid);}@Overridepublic void onError(SHARE_MEDIA platform, int action, Throwable t) {Toast.makeText(getApplicationContext(), "Authorize fail", Toast.LENGTH_SHORT).show();}@Overridepublic void onCancel(SHARE_MEDIA platform, int action) {Toast.makeText(getApplicationContext(), "Authorize cancel", Toast.LENGTH_SHORT).show();}};//这个方法的作用 当第一次登录成功时 第二次就不会跳入登录页面 @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);}@Overridepublic void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {if (requestCode == 123) {Toast.makeText(this, "授权成功", Toast.LENGTH_SHORT).show();}}

8、接下来实现登录功能

switch (view.getId()) {//微信case R.id.mThird_WeChat:UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.WEIXIN, umAuthListener);break;//QQcase R.id.mThird_QQ:UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.QQ, umAuthListener);break;//微博case R.id.mThird_Weibo:UMShareAPI.get(this).getPlatformInfo(this, SHARE_MEDIA.SINA, umAuthListener);break;}}

好了,这样就实现登录功能了。

8、附上效果图:

分享(我写了一些工具类,直接分享出来吧

1、value的styles文件中:

<style name="AlertDialogStyle" parent="@android:style/Theme.Dialog"><item name="android:windowBackground">@android:color/transparent</item><item name="android:windowContentOverlay">@null</item><item name="android:windowIsFloating">true</item><item name="android:windowFrame">@null</item><item name="android:backgroundDimEnabled">true</item><item name="android:windowNoTitle">true</item><item name="android:windowIsTranslucent">true</item></style>

2、res的drawable中sk_bg_image_dialog

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="/apk/res/android"><solid android:color="@color/white" /><corners android:radius="14dp" /></shape>

3、布局文件sk_view_share

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:id="@+id/ll_dialog"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:background="@drawable/sk_bg_image_dialog"android:gravity="center_horizontal"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="18dp"android:layout_marginBottom="14dp"android:text="分享至"android:textColor="#FF3F4A54"android:textSize="14sp" /><LinearLayoutandroid:layout_width="250dp"android:layout_height="wrap_content"android:layout_marginLeft="13dp"android:layout_marginRight="13dp"android:orientation="horizontal"android:weightSum="3"><TextViewandroid:id="@+id/tv_weChat"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:layout_weight="1"android:drawableTop="@mipmap/icon_wechat"android:drawablePadding="4dp"android:gravity="center_horizontal"android:text="微信"android:textColor="#333333"android:textSize="12sp" /><TextViewandroid:id="@+id/tv_circle"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:layout_weight="1"android:drawableTop="@mipmap/icon_circle"android:drawablePadding="4dp"android:gravity="center_horizontal"android:text="朋友圈"android:textColor="#333333"android:textSize="12sp" /><TextViewandroid:id="@+id/tv_qq"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:layout_weight="1"android:drawableTop="@mipmap/icon_qq"android:drawablePadding="4dp"android:gravity="center_horizontal"android:text="QQ"android:textColor="#333333"android:textSize="12sp" /></LinearLayout><LinearLayoutandroid:layout_width="250dp"android:layout_height="wrap_content"android:layout_marginLeft="13dp"android:layout_marginTop="20dp"android:layout_marginRight="13dp"android:layout_marginBottom="21dp"android:orientation="horizontal"android:weightSum="3"><TextViewandroid:id="@+id/tv_weibo"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:layout_weight="1"android:drawableTop="@mipmap/icon_weibo"android:drawablePadding="4dp"android:gravity="center_horizontal"android:text="新浪微博"android:textColor="#333333"android:textSize="12sp" /><TextViewandroid:id="@+id/tv_space"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:layout_weight="1"android:drawableTop="@mipmap/icon_space"android:drawablePadding="4dp"android:gravity="center_horizontal"android:text="QQ空间"android:textColor="#333333"android:textSize="12sp" /><TextViewandroid:id="@+id/tv_link"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginTop="8dp"android:layout_weight="1"android:drawableTop="@mipmap/icon_link"android:drawablePadding="4dp"android:gravity="center_horizontal"android:text="复制链接"android:textColor="#333333"android:textSize="12sp" /></LinearLayout><include layout="@layout/include_view_line" /><TextViewandroid:id="@+id/tv_cancel"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:paddingLeft="16dp"android:paddingTop="11dp"android:paddingRight="16dp"android:paddingBottom="11dp"android:text="取消分享"android:textColor="#888888"android:textSize="17sp" /></LinearLayout>

4、防止快速点击的工具类NoFastClickUtils

public class NoFastClickUtils {private static long lastClickTime = 0;//上次点击的时间private static int spaceTime = 500;//时间间隔public static boolean isFastClick() {long currentTime = System.currentTimeMillis();//当前系统时间boolean isAllowClick;//是否允许点击if (currentTime - lastClickTime > spaceTime) {isAllowClick = false;} else {isAllowClick = true;}lastClickTime = currentTime;return isAllowClick;}public static boolean isFastClick(int time) {long currentTime = System.currentTimeMillis();//当前系统时间boolean isAllowClick;//是否允许点击if (currentTime - lastClickTime > time) {isAllowClick = false;} else {isAllowClick = true;}lastClickTime = currentTime;return isAllowClick;}}

5、分享的View(ShareDialog)

public class ShareDialog implements View.OnClickListener {private Context context;private Dialog dialog;private Display display;private LinearLayout ll_dialog;private TextView tv_weChat;private TextView tv_circle;private TextView tv_qq;private TextView tv_weibo;private TextView tv_space;private TextView tv_link;private TextView tv_cancel;private String title, contentUrl, content;private UMImage image;public ShareDialog(Context context) {this.context = context;WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);display = windowManager.getDefaultDisplay();}public ShareDialog builder() {View view = LayoutInflater.from(context).inflate(R.layout.sk_view_share, null);ll_dialog = view.findViewById(R.id.ll_dialog);tv_weChat = view.findViewById(R.id.tv_weChat);tv_circle = view.findViewById(R.id.tv_circle);tv_qq = view.findViewById(R.id.tv_qq);tv_weibo = view.findViewById(R.id.tv_weibo);tv_space = view.findViewById(R.id.tv_space);tv_link = view.findViewById(R.id.tv_link);tv_cancel = view.findViewById(R.id.tv_cancel);tv_weChat.setOnClickListener(this);tv_circle.setOnClickListener(this);tv_qq.setOnClickListener(this);tv_weibo.setOnClickListener(this);tv_space.setOnClickListener(this);tv_link.setOnClickListener(this);tv_cancel.setOnClickListener(this);dialog = new Dialog(context, R.style.AlertDialogStyle);dialog.setContentView(view);ll_dialog.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));return this;}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.tv_cancel:dialog.dismiss();break;case R.id.tv_weChat: // 设置微信好友分享内容if (!NoFastClickUtils.isFastClick(800)) {//链接urlUMWeb web = new UMWeb(contentUrl);web.setTitle(title);//标题web.setDescription(content);web.setThumb(image); //缩略图new ShareAction(App.context).setPlatform(SHARE_MEDIA.WEIXIN).setCallback(umShareListener).withMedia(web).share();}break;case R.id.tv_circle:// 设置微信朋友圈分享内容if (!NoFastClickUtils.isFastClick(800)) {//链接urlUMWeb web = new UMWeb(contentUrl);web.setTitle(title);//标题web.setDescription(content);web.setThumb(image); //缩略图new ShareAction(App.context).setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE).setCallback(umShareListener).withMedia(web).share();}break;case R.id.tv_qq:// 设置QQ分享内容if (!NoFastClickUtils.isFastClick(800)) {//链接urlUMWeb web = new UMWeb(contentUrl);web.setTitle(title);//标题web.setDescription(content);web.setThumb(image); //缩略图new ShareAction(App.context).setPlatform(SHARE_MEDIA.QQ).setCallback(umShareListener).withMedia(web).share();}break;case R.id.tv_weibo:// 设置微博分享内容if (!NoFastClickUtils.isFastClick(800)) {UMWeb web = new UMWeb(contentUrl);web.setTitle(title);//标题web.setDescription(content);web.setThumb(image); //缩略图new ShareAction(App.context).setPlatform(SHARE_MEDIA.SINA).setCallback(umShareListener).withMedia(web).share();}break;case R.id.tv_space:// 设置微信朋友圈分享内容if (!NoFastClickUtils.isFastClick(800)) {UMWeb web = new UMWeb(contentUrl);web.setTitle(title);//标题web.setDescription(content);web.setThumb(image); //缩略图new ShareAction(App.context).setPlatform(SHARE_MEDIA.QZONE).setCallback(umShareListener).withMedia(web).share();}break;case R.id.tv_link:if (!NoFastClickUtils.isFastClick(800)) {ClipboardManager mClipboardManager = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE);ClipData clipData = ClipData.newRawUri("Label", Uri.parse(contentUrl));mClipboardManager.setPrimaryClip(clipData);Toast.makeText(context, "复制完成", Toast.LENGTH_SHORT).show();}break;}}/*** 点击外围Dialog消失** @param cancel* @return*/public ShareDialog setCancelable(boolean cancel) {dialog.setCancelable(cancel);return this;}/*** 设置标题** @param title* @return*/public ShareDialog setTitle(String title) {this.title = title;return this;}/*** 设置课程介绍** @param content* @return*/public ShareDialog setContent(String content) {this.content = content;return this;}/*** 设置图片** @param image* @return*/public ShareDialog setImage(UMImage image) {this.image = image;return this;}/*** 设置连接** @param contentUrl* @return*/public ShareDialog setContentUrl(String contentUrl) {this.contentUrl = contentUrl;return this;}public void show() {dialog.show();}private UMShareListener umShareListener = new UMShareListener() {@Overridepublic void onStart(SHARE_MEDIA share_media) {}@Overridepublic void onResult(SHARE_MEDIA platform) {Toast.makeText(context, "分享成功", Toast.LENGTH_SHORT).show();}@Overridepublic void onError(SHARE_MEDIA platform, Throwable t) {Log.d("分享失败", "t:" + t);}@Overridepublic void onCancel(SHARE_MEDIA platform) {Log.d("分享取消", platform.toString());}};}

6、在点击事件中调用

String share_url = 分享的url;UMImage image = new UMImage(this, "图片链接");new ShareDialog(this).builder().setTitle(lessonDetailInfoBean.getTitle()) //标题.setContent(lessonDetailInfoBean.getTitle()) //文本.setImage(image) //图片.setContentUrl(share_url) //网页地址.setCancelable(true).show();

好了,这就是整个效果图了,有问题欢迎随时反馈,看到会及时回复

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。