簡單實現第三方qq登入和分享
第一步:匯入jar包和res檔案,將jar包add as lib…
第一步:匯入jar包到專案資料夾libs
umeng-common-1.5.4.jar
umeng-share-core-6.9.4.jar
umeng-share-QQ-simplify-6.9.4.jar
umeng-share-sina-simplify-6.9.4.jar
umeng-share-wechat-simplify-6.9.4.jar
umeng-shareboard-widget-6.9.4.jar
umeng-sharetool-6.9.4.jar
第二步:匯入佈局檔案到layout資料夾下
socialize_share_menu_item.xml
umeng_socialize_oauth_dialog.xml
umeng_socialize_share.xml
第三步:匯入下面檔案到values資料夾下
umeng_socialize_shareview_strings.xml
umeng_socialize_style.xml
第四步:匯入需要的圖片到drawable資料夾下
第二步:自定義MyApplication 在onCreate中完成以下兩行程式碼(所有引數沒有自己註冊過不要改)
package com.umeng.soexample;
import android.app.Application;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;
/**
* 第一步:匯入jar包和res檔案,將jar包add as lib..
* 第二步:自定義Application 在onCreate中完成以下兩行程式碼(所有引數沒有自己註冊過不要改)
* 第三步:在Manifests中新增配置,詳見Manifests註釋(不要隨意修改)
* 第四步:在需要呼叫的地方寫呼叫,詳見MainActivity中
*/
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
UMConfigure.init(this,"5a12384aa40fa3551f0001d1","umeng",UMConfigure.DEVICE_TYPE_PHONE,"");
//下面這一行程式碼根據需要設定自己的,當前表示qq
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
}
}
第三步:在Manifests中新增配置,詳見Manifests註釋(不要隨意修改)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.umeng.soexample">
<!-- 1.新增以下許可權 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<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.INTERNET" />
<!-- 2.使用自定義Applicaiton -->
<application
android:name=".MyApplication"
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">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 3.寫以下兩個activity -->
<activity
android: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" />
<data android:scheme="tencent100424468" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
<!-- 3.寫以下配置 -->
<meta-data android:name="UMENG_APPKEY"
android:value="5c07d385f1f556e5f90003c4">
</meta-data>
</application>
</manifest>
第四步:在需要呼叫的地方寫呼叫,詳見MainActivity中
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.Button;
import android.widget.Toast;
import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button QQ_Share;
private Button QQ_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
/**
* 新增回撥
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
private void initView() {
QQ_Share = findViewById(R.id.QQ_Share);
QQ_login = findViewById(R.id.QQ_login);
QQ_Share.setOnClickListener(this);
QQ_login.setOnClickListener(this);
checkPermission();
}
/**
* 動態新增許可權,模擬器Android版本小於6.0的不用寫,再有問的打死
*/
private void checkPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
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);
}
}
/**
* 動態新增許可權回撥,模擬器Android版本小於6.0的不用寫,再有問的打死
*/
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.QQ_Share:
//分享用的圖片
UMImage image = new UMImage(MainActivity.this, R.drawable.umeng_socialize_qq);
new ShareAction(MainActivity.this)
//分享的標題
.withText("hello")
//分享的圖片
.withMedia(image)
//分享到哪,這裡面只寫了QQ,如有需要在後面新增
//.setDisplayList(SHARE_MEDIA.QZONE,SHARE_MEDIA.QQ)
.setDisplayList(SHARE_MEDIA.QQ)
//設定回撥
.setCallback(shareListener)
//開啟分享皮膚
.open();
break;
case R.id.QQ_login:
//獲得UMShareAPI例項
UMShareAPI umShareAPI = UMShareAPI.get(MainActivity.this);
//開始登入
//第一個引數:上下文
//第二個引數,登入哪種平臺
//第三個引數,新增回撥
umShareAPI.getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() {
/**
* 開始登入回撥
* @param share_media
*/
@Override
public void onStart(SHARE_MEDIA share_media) {
Log.i("dj", "UMAuthListener onStart");
}
/**
* 登入完成
* @param share_media
* @param i
* @param map
*/
@Override
public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
//頭像,暱稱,如果拿不到,自己debug看Key是啥,再問打死
Log.i("dj", "UMAuthListener onComplete");
//獲取名字
String name = map.get("screen_name");
//獲取頭像
String img = map.get("profile_image_url");
Log.i("dj", "name is "+ name);
Log.i("dj", "img is "+ img);
}
/**
* 登入失敗
* @param share_media
* @param i
* @param throwable
*/
@Override
public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {
Log.i("dj", "UMAuthListener onError" + throwable.getLocalizedMessage());
}
/**
* 登入取消
* @param share_media
* @param i
*/
@Override
public void onCancel(SHARE_MEDIA share_media, int i) {
Log.i("dj", "UMAuthListener onCancel");
}
});
break;
default:
break;
}
}
private UMShareListener shareListener = new UMShareListener() {
/**
* @descrption 分享開始的回撥
* @param platform 平臺型別
*/
@Override
public void onStart(SHARE_MEDIA platform) {
Log.i("dj", "UMShareListener onStart");
}
/**
* @descrption 分享成功的回撥
* @param platform 平臺型別
*/
@Override
public void onResult(SHARE_MEDIA platform) {
Log.i("dj", "UMShareListener onResult");
}
/**
* @descrption 分享失敗的回撥
* @param platform 平臺型別
* @param t 錯誤原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Log.i("dj", "UMShareListener onError");
}
/**
* @descrption 分享取消的回撥
* @param platform 平臺型別
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Log.i("dj", "UMShareListener onCancel");
}
};
}
相關文章
- Java實現QQ第三方登入Java
- laravel實現第三方qq一鍵登入Laravel
- 封裝QQ、微信、微博的第三方登入和分享封裝
- 用 hyperf websocket 實現,類似 qq 單機登入功能Web
- 基於 QQ 第三方登入
- php使用第三方QQ登入PHP
- QQ模擬登入實現後篇
- laravel_admin 單一登入的簡單實現Laravel
- QQ 快速登入協議分析與實現協議
- Python自動登入QQ的實現示例Python
- Node+Express+MySql實現簡單增刪改查和登入ExpressMySql
- HTML基礎實現簡單的註冊和登入頁面HTML
- JSP(ajax)+Servlet實現簡單的登入功能JSServlet
- 社會化登入分享-QQ SDK接入
- node+express+mongDB實現簡單登入註冊Express
- Flask-Login 讓實現登入功能變簡單Flask
- SSM專案搭建及實現簡單的登入SSM
- 簡單仿QQ登入介面,儲存資訊到sd卡SD卡
- Laravel5.6 實現第三方登入 微信登入Laravel
- QQ第三方登入認證流程(乾貨)
- 訂單交易平臺三(登入介面整個實現過程)階段一(只實現簡單的登入功能)
- Java介面程式設計實戰(一)——簡易QQ登入介面Java程式設計
- Flutter系列:2.實現一個簡單的登入介面Flutter
- 簡單登入註冊實現(Java物件導向複習)Java物件
- 成品直播原始碼推薦,登入和註冊兩個頁面的簡單實現原始碼
- 基於 Session 實現簡訊登入Session
- 快速實現抖音的分享&登入(android)Android
- Casdoor + OAuth 實現單點登入 SSOOAuth
- 【網頁登入】QQ 登入、微信登入、微博登入、GitHub 登入網頁Github
- Java Web簡單登陸功能的實現JavaWeb
- 跨域分散式系統單點登入的實現(CAS單點登入)跨域分散式
- vue實現簡訊驗證碼登入Vue
- uniapp 實現簡訊驗證碼登入APP
- Java QQ授權第三方登陸Java
- 如何用python登入qqPython
- 聊聊“密碼登入”、“手機快捷登入”和“第三方聯合登入”密碼
- DcatAdmin 簡單實現匯入ExcelExcel
- 蘋果稽核被拒——第三方QQ登入的五種情形蘋果