参照第三方登录的教程实现以下步骤
网址:https://developer.umeng.com/docs/66632/detail/66639?tdsourcetag=s_pcqq_aiomsg#h3--android-manifest-xml
创建一个项目,注意:项目包名一定要是soexample.umeng.com
例如:
然后加入需要用到的一些东西
在这些文件当中加入需要用到的
drawable下面加入素材
jar包下面导入需要的jar包
来layout下面加入几个布局文件
第一个
<?xml version="1.0" encoding="utf-8"?><com.umeng.socialize.shareboard.SocializeImageView
android:id="@+id/socialize_image_view"
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="5dp"
android:src="@drawable/umeng_socialize_menu_default" />
<TextView
android:id="@+id/socialize_text_view"
android:layout_width="63dp"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:ellipsize="end"
android:singleLine="true"
android:text="未知"
android:textSize="12sp" />
第二个
<?xml version="1.0" encoding="utf-8"?><RelativeLayout
android:id="@+id/umeng_socialize_titlebar"
android:layout_width="match_parent"
android:layout_height="54dp"
android:background="#0086DC">
<TextView
android:id="@+id/umeng_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text=""
android:textColor="#ffffff"
android:textSize="18sp" />
<RelativeLayout
android:id="@+id/umeng_back"
android:layout_width="60dp"
android:layout_height="match_parent"
android:onClick="onCancel"
android:visibility="visible">
<ImageButton
android:layout_width="12dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:background="@drawable/umeng_socialize_back_icon"
android:layout_marginLeft="15dp"
android:scaleType="center" />
</RelativeLayout>
<TextView
android:id="@+id/umeng_share_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_marginRight="10dp"
android:background="@drawable/umeng_socialize_btn_bg"
android:padding="4dp"
android:text="分享"
android:textColor="#ffffff" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/umeng_socialize_follow"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:background="#AAAAAA"
android:visibility="visible">
<CheckBox
android:id="@+id/umeng_socialize_follow_check"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:checked="true"
android:visibility="gone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@id/umeng_socialize_follow_check"
android:text="关注官方微博"
android:textColor="#f8f8f8"
android:textSize="16sp"
android:visibility="gone" />
</RelativeLayout>
<!--<LinearLayout-->
<!--android:id="@+id/webView_container"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:layout_above="@id/umeng_socialize_follow"-->
<!--android:layout_below="@id/umeng_socialize_titlebar"-->
<!--android:orientation="horizontal"-->
<!--android:visibility="visible" />-->
<WebView
android:id="@+id/webView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#F2F5F6"
android:layout_above="@id/umeng_socialize_follow"
android:layout_below="@id/umeng_socialize_titlebar"
android:visibility="visible" />
<RelativeLayout
android:id="@+id/progress_bar_parent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/umeng_socialize_titlebar"
android:background="#F2F5F6" >
<LinearLayout
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_centerInParent="true"
android:orientation="horizontal">
<ProgressBar
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="10dp" />
</LinearLayout>
</RelativeLayout>
第三个
<?xml version="1.0" encoding="utf-8"?><RelativeLayout
android:id="@+id/umeng_socialize_share_titlebar"
android:layout_width="match_parent"
android:layout_height="54dp"
android:background="#0086DC">
<TextView
android:id="@+id/umeng_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text=""
android:textColor="#ffffff"
android:textSize="18sp" />
<RelativeLayout
android:id="@+id/umeng_back"
android:layout_width="50dp"
android:layout_height="match_parent"
android:onClick="onCancel"
android:visibility="visible">
<ImageButton
android:layout_width="12dp"
android:layout_height="20dp"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:background="@drawable/umeng_socialize_back_icon"
android:clickable="false"
android:scaleType="center" />
</RelativeLayout>
<TextView
android:id="@+id/umeng_share_btn"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:gravity="center_vertical"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:text="分享"
android:textColor="#ffffff"
android:textSize="15sp" />
</RelativeLayout>
<EditText
android:id="@+id/umeng_socialize_share_edittext"
android:layout_width="fill_parent"
android:layout_height="180dp"
android:layout_below="@id/umeng_socialize_share_titlebar"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="8dp"
android:background="#ffffff"
android:bufferType="spannable"
android:gravity="top"
android:hint="编辑分享内容"
android:lineSpacingExtra="3dp"
android:paddingBottom="10dp"
android:textColor="#000000"
android:textSize="15sp" />
<TextView
android:id="@+id/umeng_socialize_share_word_num"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignRight="@id/umeng_socialize_share_edittext"
android:background="#ffffff"
android:layout_below="@id/umeng_socialize_share_edittext"
android:paddingBottom="10dp"
android:paddingRight="15dp"
android:gravity="right"
android:singleLine="true"
android:textColor="#98999B"
android:textSize="14sp" />
<RelativeLayout
android:id="@+id/umeng_socialize_share_bottom_area"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/umeng_socialize_share_word_num"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:background="#F2F5F6"
android:visibility="gone">
<RelativeLayout
android:layout_width="62dp"
android:layout_height="62dp"
android:layout_centerVertical="true"
android:layout_marginBottom="15dp"
android:layout_marginLeft="15dp"
android:id="@+id/umeng_image_edge"
android:layout_marginTop="15dp"
android:background="@drawable/umeng_socialize_edit_bg"
>
<ImageView
android:id="@+id/umeng_share_icon"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerInParent="true"
android:src="#2c3035" />
</RelativeLayout>
<TextView
android:layout_width="280dp"
android:id="@+id/umeng_web_title"
android:layout_toRightOf="@id/umeng_image_edge"
android:layout_marginLeft="40dp"
android:layout_marginTop="20dp"
android:textColor="#575A5C"
android:singleLine="true"
android:textSize="14sp"
android:visibility="gone"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/umeng_del"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignRight="@id/umeng_image_edge"
android:layout_alignTop="@id/umeng_image_edge"
android:layout_marginRight="-10dp"
android:layout_marginTop="-10dp"
android:background="@drawable/umeng_socialize_delete" />
</RelativeLayout>
values下两个文件
第一个
<?xml version="1.0" encoding="utf-8"?> 分享到新浪微博 分享到豆瓣 分享到人人网<string name="umeng_socialize_sharetotencent">分享到腾讯微博</string>
<string name="umeng_socialize_sharetotwitter">分享到twitter</string>
<string name="umeng_socialize_sharetolinkin">分享到领英</string>
第二个
<?xml version="1.0" encoding="utf-8"?><!--<style name="umeng_socialize_action_bar_item_im">-->
<!--<item name="android:layout_width">25dp</item>-->
<!--<item name="android:layout_height">25dp</item>-->
<!--<item name="android:scaleType">fitCenter</item>-->
<!--<item name="android:layout_centerVertical">true</item>-->
<!--</style>-->
<!--<style name="umeng_socialize_action_bar_item_tv">-->
<!--<item name="android:layout_width">wrap_content</item>-->
<!--<item name="android:layout_height">fill_parent</item>-->
<!--<item name="android:layout_marginLeft">5dp</item>-->
<!--<item name="android:text">999</item>-->
<!--<item name="android:gravity">center</item>-->
<!--<item name="android:textColor">#ffffff</item>-->
<!--<item name="android:textSize">12sp</item>-->
<!--<item name="android:textStyle">bold</item>-->
<!--</style>-->
<!--网页授权的布局-->
<style name="umeng_socialize_popup_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:backgroundDimAmount">0.6</item>
</style>
<!--<style name="Theme.UMDialog" parent="android:style/Theme.Dialog">-->
<!--<item name="android:windowNoTitle">true</item>-->
<!--<item name="android:windowBackground">@android:color/transparent</item>-->
<!--</style>-->
<style name="Theme.UMDefault" parent="android:style/Theme.NoTitleBar"></style>
<!--<style name="umeng_socialize_divider">-->
<!--<item name="android:layout_width">fill_parent</item>-->
<!--<item name="android:layout_height">1dp</item>-->
<!--<item name="android:background">@color/umeng_socialize_divider</item>-->
<!--</style>-->
<!--<style name="umeng_socialize_list_item">-->
<!--<item name="android:layout_width">fill_parent</item>-->
<!--<item name="android:layout_height">55dp</item>-->
<!--<item name="android:background">@color/umeng_socialize_list_item_bgcolor</item>-->
<!--<item name="android:paddingBottom">5dp</item>-->
<!--<item name="android:paddingTop">5dp</item>-->
<!--</style>-->
<!--<style name="umeng_socialize_edit_padding">-->
<!--<item name="android:layout_width">fill_parent</item>-->
<!--<item name="android:layout_height">fill_parent</item>-->
<!--<item name="android:background">@color/umeng_socialize_list_item_bgcolor</item>-->
<!--<item name="android:layout_marginLeft">6dp</item>-->
<!--<item name="android:layout_marginRight">6dp</item>-->
<!--<item name="android:layout_marginTop">6dp</item>-->
<!--<item name="android:layout_marginBottom">6dp</item>-->
<!--</style>-->
需要一个debug文件
接下来就是这几个文件了
MainActvity中
package com.umeng.soexample;
import android.Manifest;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.UMShareConfig;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;
import com.umeng.socialize.media.UMWeb;
import java.util.Iterator;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private String TAG = this.getClass().getSimpleName();
private ImageView mImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImage = findViewById(R.id.image);
}
public void qqshare(View view) {
//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);
}
UMImage umImage = new UMImage(MainActivity.this, R.mipmap.ic_launcher);
UMWeb web = new UMWeb("https://www.umeng.com/");
web.setTitle("This is music title");//标题
web.setThumb(umImage); //缩略图
web.setDescription("my description");//描述
//开始分享
new ShareAction(MainActivity.this).withText("hello").withMedia(web)
.withMedia(web)
.setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN)
//.share();无面板分享
.open();
}
public void qqLogin(View view) {
//每次登录授权
UMShareConfig config = new UMShareConfig();
config.isNeedAuthOnGetUserInfo(true);
UMShareAPI.get(MainActivity.this).setShareConfig(config);
authorization(SHARE_MEDIA.QQ);
}
public void weiXinLogin(View view) {
authorization(SHARE_MEDIA.WEIXIN);
}
public void sinaLogin(View view) {
authorization(SHARE_MEDIA.SINA);
}
//授权
private void authorization(SHARE_MEDIA share_media) {
UMShareAPI.get(this).getPlatformInfo(this, share_media, new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA share_media) {
Log.d(TAG, "onStart " + "授权开始");
}
@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
Log.d(TAG, "onComplete " + "授权完成");
//sdk是6.4.4的,但是获取值的时候用的是6.2以前的(access_token)才能获取到值,未知原因
String uid = map.get("uid");
String openid = map.get("openid");//微博没有
String unionid = map.get("unionid");//微博没有
String access_token = map.get("access_token");
String refresh_token = map.get("refresh_token");//微信,qq,微博都没有获取到
String expires_in = map.get("expires_in");
String name = map.get("name");
String gender = map.get("gender");
String iconurl = map.get("iconurl");
Toast.makeText(getApplicationContext(), "name=" + name + ",gender=" + gender, Toast.LENGTH_SHORT).show();
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> next = iterator.next();
if (next.getKey().equals("iconurl")) {
Picasso.with(MainActivity.this).load(next.getValue()).into(mImage);
Intent intent = new Intent(MainActivity.this, TwoActivity.class);
intent.putExtra("iconurl", iconurl);
intent.putExtra("name", name);
startActivity(intent);
finish();
}
}
//拿到信息去请求登录接口。。。
}
@Override
public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
Log.d(TAG, "onError " + "授权失败");
}
@Override
public void onCancel(SHARE_MEDIA share_media, int i) {
Log.d(TAG, "onCancel " + "授权取消");
}
});
}
//分享
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();
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
//PublicStaticData.mShareAPI.onActivityResult(requestCode, resultCode, data);
}
//防止内存泄漏
@Override
protected void onDestroy() {
super.onDestroy();
UMShareAPI.get(this).release();
}
public void weixinshare(View view) {
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=“com.umeng.soexample.MainActivity”>
<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">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="qqLogin"
android:text="QQ登入" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="qqshare"
android:text="QQ分享" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="weiXinLogin"
android:text="微信登录" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageV"/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
TwoActvity中
package com.umeng.soexample;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
public class TwoActivity extends AppCompatActivity {
private ImageView image_pic;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//初始化
initView();
//传头像
initPic();
}
private void initPic() {
Intent intent = getIntent();
String iconurl = intent.getStringExtra("iconurl");
Picasso.with(TwoActivity.this).load(iconurl).into(image_pic);
}
private void initView() {
image_pic = (ImageView) findViewById(R.id.image_pic);
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=".TwoActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image_pic"
/>
</android.support.constraint.ConstraintLayout>