第三方登錄

1.導入對應的包 和res文件

2.添加回調

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
3.添加權限
    <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" />
4.添加activity
    <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"/>

5.
添加友盟appkey(在application裏面
    <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" >
    </meta-data>
6.
package com.bwie.topnewsnormal.app;

import android.app.Application;
import android.content.Context;
import android.util.Log;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.utils.StorageUtils;
import com.umeng.socialize.Config;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.UMShareAPI;

import org.xutils.x;

import java.io.File;

/**
 * Created by Shadow on 2017/8/2.
 */

public class MyApplication extends Application {

    {
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
    }
    @Override
    public void onCreate() {
        super.onCreate();
        initImageLoader(getApplicationContext());
        x.Ext.init(this);

        UMShareAPI.get(this);
        Config.DEBUG = true;
    }

    public void initImageLoader(Context context){
        File cacheDir = StorageUtils.getOwnCacheDirectory(context, "topnews/Cache");//獲取到緩存的目錄地址
        Log.d("cacheDir", cacheDir.getPath());
        //創建配置ImageLoader(所有的選項都是可選的,只使用那些你真的想定製),這個可以設定在APPLACATION裏面,設置爲全局的配置參數
        ImageLoaderConfiguration config = new ImageLoaderConfiguration
                .Builder(context)
                .threadPoolSize(3)//線程池內加載的數量
                .denyCacheImageMultipleSizesInMemory()//.memoryCache(new UsingFreqLimitedMemoryCache(2 * 1024 * 1024)) // You can pass your own memory cache implementation你可以通過自己的內存緩存實現
                .memoryCacheSize(2 * 1024 * 1024)
                .diskCacheSize(50 * 1024 * 1024)
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//將保存的時候的URI名稱用MD5 加密
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .diskCache(new UnlimitedDiskCache(cacheDir))
                //自定義緩存路徑//.imageDownloader(new BaseImageDownloader(context, 5 * 1000, 30 * 1000)) // connectTimeout (5 s), readTimeout (30 s)超時時間
                .build();
        ImageLoader.getInstance().init(config);//全局初始化此配置
    }
}
7.簽名配置
buildTypes {
    release {
        minifyEnabled false
        signingConfig signingConfigs.debug
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled false
        signingConfig signingConfigs.debug
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword "android"
        keyAlias "androiddebugkey"
        keyPassword "android"
    }
}
8.獲取用戶資料授權
package com.bwie.topnewsnormal;

import android.content.Intent;
import android.support.design.widget.TabLayout;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.bwie.topnewsnormal.adapter.MyPagerAdapter;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.bean.SHARE_MEDIA;

import java.util.Map;

public class MainActivity extends FragmentActivity implements View.OnClickListener {

    private TabLayout tablayout;
    private ViewPager vp;
    private ImageView ivIcon;
    private SlidingMenu slidingMenu;
    private ImageView ivQQ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tablayout = (TabLayout) findViewById(R.id.tablayout);
        vp = (ViewPager) findViewById(R.id.vp);
        ivIcon = (ImageView) findViewById(R.id.ivIcon);
        ivIcon.setOnClickListener(this);
        vp.setAdapter(new MyPagerAdapter(getSupportFragmentManager(), null));
        tablayout.setupWithViewPager(vp);
        initSlidingMenu();
        ivQQ.setOnClickListener(this);


    }

    public void initSlidingMenu(){
        //得到一個側拉菜單
        slidingMenu = new SlidingMenu(this);
        //顯示位置
        slidingMenu.setMode(SlidingMenu.LEFT);
        //設置觸摸的區域
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        //設置距離右邊
        slidingMenu.setBehindOffset(500);
        //範圍是 0 - 1f ,當設置成1的時候菜單欄有明顯的褪色效果
        // slidingMenu.setFadeDegree(1);
        //activity關聯起來
        slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        //設置view
        slidingMenu.setMenu(R.layout.slidingmenu_layout);
        ivQQ = (ImageView) findViewById(R.id.ivQQ);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.ivIcon:
                slidingMenu.toggle();
                break;
            case R.id.ivQQ:

                UMShareAPI.get(this).getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, authListener);
                break;
        }
    }

    UMAuthListener authListener = new UMAuthListener() {
        /**
         * @desc 授權開始的回調
         * @param platform 平臺名稱
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @desc 授權成功的回調
         * @param platform 平臺名稱
         * @param action 行爲序號,開發者用不上
         * @param data 用戶資料返回
         */
        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {

            Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show();
            String name = data.get("name");
            String gender = data.get("gender");
            String photoUrl = data.get("iconurl");
            ImageLoader.getInstance().displayImage(photoUrl,ivQQ);

        }

        /**
         * @desc 授權失敗的回調
         * @param platform 平臺名稱
         * @param action 行爲序號,開發者用不上
         * @param t 錯誤原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {

            if (UMShareAPI.get(MainActivity.this).isInstall(MainActivity.this,SHARE_MEDIA.QQ)){
                Toast.makeText(MainActivity.this, "失敗:" + t.getMessage(),Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(MainActivity.this, "沒有安裝qq" + t.getMessage(),Toast.LENGTH_LONG).show();
            }

        }

        /**
         * @desc 授權取消的回調
         * @param platform 平臺名稱
         * @param action 行爲序號,開發者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            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);
    }
}
9.
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章