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.