首页 > 系统 > Android > 正文

Android 用友盟整的第三方的QQ登录

2019-11-07 23:05:21
字体:
来源:转载
供稿:网友

 最近正在学习第三方的分享,看到别人很多用的友盟第三方,于是就去官网下载了SDK和相关的API开始整了。

以下是我的流程,给自己做个笔记。

第一步:注册自己的应用 拿到友盟APPKEY,应用名=你项目的包名下载好友盟分享SDKhttp://mobile.umeng.com/social 然后解压出来

二,把main文件下的libs和res里面的文件复制到你项目对应的文件里面,再把platforms/QQ精简版/libs下的文件也复制到项目的libs里面(我这里下载的QQ精简版),添加依赖

三,修改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" />

  添加

//友盟的APPKEY  需要自己注册 把58b278f6f29d983ee60016e6换成你的<meta-data    android:name="UMENG_APPKEY"    android:value="58b278f6f29d983ee60016e6" ></meta-data>//QQActivity  需要去openqq 去注册你的APPID  把100424468换成你的 tencent不能变<activity    android:name="com.umeng.qq.tencent.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.umeng.qq.tencent.AssistActivity"    android:screenOrientation="portrait"    android:theme="@android:style/Theme.Translucent.NoTitleBar"    android:configChanges="orientation|keyboardHidden|screenSize"/>
四,创建自己的application 
public class MyApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        //1105933485--APPID  kqfpNVOuG9oMLruW--APPKEY        PlatformConfig.setQQZone("1105933485","kqfpNVOuG9oMLruW");    }}
五,编写Activity 
package com.example.wuhan.youmeng;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.SharedPReferences;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.umeng.socialize.UMAuthListener;import com.umeng.socialize.UMShareAPI;import com.umeng.socialize.bean.SHARE_MEDIA;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URI;import java.net.URL;import java.util.Map;import java.util.Set;public class MainActivity extends Activity implements View.OnClickListener {    private ImageView img;    private TextView tv;    private Button btn;    UMShareAPI api;    private SharedPreferences sp;    private String name;    private String image_url;    private Bitmap bitmap;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    private void init() {        //创建SharedPreferences保存QQ名、头像        sp = getSharedPreferences("kk", Context.MODE_PRIVATE);        img = (ImageView) findViewById(R.id.img);        tv = (TextView) findViewById(R.id.tv);        btn = (Button) findViewById(R.id.btn);        btn.setOnClickListener(this);    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        api.get(this).onActivityResult(requestCode, resultCode, data);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn:                api = UMShareAPI.get(this);                SHARE_MEDIA platform = SHARE_MEDIA.QQ;                api.doOauthVerify(this, platform, umAuthListener);        }    }    private UMAuthListener umAuthListener = new UMAuthListener() {        @Override        public void onStart(SHARE_MEDIA share_media) {        }        @Override        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {            // Toast.makeText(MainActivity.this, "Authorize succeed", Toast.LENGTH_SHORT).show();            Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();            //友盟API获得平台信息            api.getPlatformInfo(MainActivity.this, platform,                    new UMAuthListener() {                        @Override                        public void onError(SHARE_MEDIA arg0, int arg1, Throwable arg2) {                        }                        @Override                        public void onStart(SHARE_MEDIA share_media) {                        }                        @Override                        public void onComplete(SHARE_MEDIA arg0, int arg1, Map<String, String> data) {                            Set<String> set = data.keySet();                            SharedPreferences.Editor edit = sp.edit();                            for (String string : set) {                                // 获得头像图片的网络地址                                if (string.equals("profile_image_url")) {                                    image_url = data.get(string);                                }                                // 设置昵称                                if (string.equals("screen_name")) {                                    name = data.get(string);                                }                            }                            edit.putString("image", image_url);                            edit.putString("name", name);                            edit.commit();                            tv.setText(name);                            new MyAsync().execute(image_url);                        }                        @Override                        public void onCancel(SHARE_MEDIA arg0, int arg1) {                        }                    });        }        @Override        public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {        }        @Override        public void onCancel(SHARE_MEDIA share_media, int i) {        }    };    class MyAsync extends AsyncTask<String,String,Bitmap>{        @Override        protected Bitmap doInBackground(String... params) {            try {                URL url=new URL(image_url);                HttpURLConnection connection= (HttpURLConnection) url.openConnection();                connection.setConnectTimeout(3000);                connection.setRequestMethod("GET");                connection.setDoInput(true);                connection.setUseCaches(false);                if(connection.getResponseCode()==200){                    InputStream inputStream=connection.getInputStream();                    bitmap= BitmapFactory.decodeStream(inputStream);                    inputStream.close();                    return bitmap;                }            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(Bitmap bitmap) {            super.onPostExecute(bitmap);            img.setImageBitmap(bitmap);        }    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表