本文实例为大家分享了Android实现QQ的第三方登录的具体代码,供大家参考,具体内容如下

MainActivity.java

/**
 * 实现QQ的第三方登录
 * 1.搭建环境
(添加Jar包,添加Res图片,布局,Values资源,添加权限,配置Activity信息,修改Key值,build签名配置,Application初始化)
 * 2.写布局
 * 3.登录的代码
 * 注意:必须用真机测试
 */
public class MainActivity extends AppCompatActivity {

 private ImageView iv_login;
 private TextView tv_result;

 //A.定义装平台的容器
 public ArrayList<SnsPlatform> platforms = new ArrayList<SnsPlatform>();
 private SHARE_MEDIA[] list = {SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE};
 private UMShareAPI mUMShareAPI;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  iv_login = (ImageView) findViewById(R.id.iv_login);
  tv_result = (TextView) findViewById(R.id.tv_result);

  //A.三方平台,添加到遍历的集合中
  initPlatforms();

  //A.获取UM的对象
  mUMShareAPI = UMShareAPI.get(MainActivity.this);

  //A.获取是否授权
  final boolean isauth = UMShareAPI.get(this).isAuthorize(this, platforms.get(0).mPlatform);

  //A.点击QQ的头像,进行授权
  iv_login.set Listener(new View. Listener() {
   @Override
   public void  (View view) {
    if (isauth){
     Toast.makeText(MainActivity.this, \"授权成功\", Toast.LENGTH_SHORT).show();
     mUMShareAPI.deleteOauth(MainActivity.this, platforms.get(0).mPlatform,authListener);
    }else{
     mUMShareAPI.doOauthVerify(MainActivity.this, platforms.get(0).mPlatform,authListener);
    }
    mUMShareAPI.getPlatformInfo(MainActivity.this, platforms.get(0).mPlatform,authListener);

   }
  });

  //B.分享的逻辑代码
  ImageView iv_share = (ImageView) findViewById(R.id.iv_share);

  final UMImage image = new UMImage(MainActivity.this, \"http://b.hiphotos.baidu.com/zhidao/pic/item/63d9f2d3572c11df28e42e30602762d0f703c2e8.jpg\");//网络图片
  final UMImage imagelocal = new UMImage(this, R.mipmap.ic_launcher);
  imagelocal.setThumb(new UMImage(this, R.mipmap.ic_launcher));
  imagelocal.set (\"易宸锋好帅\");
  iv_share.set Listener(new View. Listener() {
   @Override
   public void  (View v) {
    new ShareAction(MainActivity.this).withMedia(image)
      .setPlatform(platforms.get(0).mPlatform)
      .setCallback(shareListener).share();

    new ShareAction(MainActivity.this).setPlatform(SHARE_MEDIA.QQ)
      .withText(\"hello\")
      .setCallback(shareListener)
      .share();
   }
  });

 }

 //A.
 private void initPlatforms() {
  //A.集合清空
  platforms.clear();
  //A.通过for循环,把数组数据添加到集合中
  for (SHARE_MEDIA e : list) {
   if (!e.toString().equals(SHARE_MEDIA.GENERIC.toString())) {
    platforms.add(e.toSnsPlatform());
   }
  }
 }

 //A.
 UMAuthListener authListener = new UMAuthListener() {
  @Override
  public void  (SHARE_MEDIA platform) {
   //授权开始的回调,可以用来处理等待框,或相关的文字提示
  }

  @Override//授权成功时回调
  public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
   //获取用户授权后的信息
   Set<String> strings = data.keySet();
   data.get(\"profile_image_url\");
   String temp=\"\";
   for(String key: strings ){
    temp =temp +key +\" :\" +data.get(key) +\"\\n\";
   }
   tv_result.setText(temp);
  }

  @Override
  public void  (SHARE_MEDIA platform, int action, Throwable t) {
   Toast.makeText(MainActivity.this, \"失败:\" + t.getMessage(), Toast.LENGTH_LONG).show();

  }

  @Override
  public void onCancel(SHARE_MEDIA platform, int action) {
   Toast.makeText(MainActivity.this, \"取消了\", Toast.LENGTH_LONG).show();
  }
 };

 //A.
 @Override
 protected void onActivityResult ( int requestCode, int resultCode, Intent data){
  super.onActivityResult(requestCode, resultCode, data);
  UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
 }


 //B.分享的逻辑代码
 private UMShareListener shareListener = new UMShareListener() {
  @Override
  public void  (SHARE_MEDIA platform) {
  }

  @Override
  public void onResult(SHARE_MEDIA platform) {
   Toast.makeText(MainActivity.this, \"成功了\", Toast.LENGTH_LONG).show();
  }

  @Override
  public void  (SHARE_MEDIA platform, Throwable t) {
   Toast.makeText(MainActivity.this, \"失败\" + t.getMessage(), Toast.LENGTH_LONG).show();
  }

  @Override
  public void onCancel(SHARE_MEDIA platform) {
   Toast.makeText(MainActivity.this, \"取消了\", Toast.LENGTH_LONG).show();

  }
 };
}

activity_main.

<RelativeLayout
  ns:android=\"http://schemas.android.com/apk/res/android\"
 android:layout_width=\"match_parent\"
 android:layout_height=\"match_parent\">

 <LinearLayout
  android:layout_width=\"match_parent\"
  android:layout_height=\"wrap_content\"
  android:orientation=\"horizontal\">

  <ImageView
   android:id=\"@+id/iv_login\"
   android:layout_width=\"0dp\"
   android:layout_height=\"wrap_content\"
   android:layout_weight=\"1\"
   android:src=\"@drawable/umeng_socialize_qq\"/>

  <ImageView
   android:id=\"@+id/iv_share\"
   android:layout_width=\"0dp\"
   android:layout_height=\"wrap_content\"
   android:layout_weight=\"1\"
   android:src=\"@drawable/umeng_socialize_qzone\"/>
 </LinearLayout>

 <TextView
  android:id=\"@+id/tv_result\"
  android:text=\"ggg\"
  android:layout_width=\"wrap_content\"
  android:layout_height=\"wrap_content\"/>

</RelativeLayout>

MyApp.java

public class MyAPP extends Application {

 @Override
 public void onCreate() {
  super.onCreate();
  //U盟SDK初始化
  UMShareAPI.get(this);
 }

 {
  PlatformConfig.setQQZone(\"1106036236\",\"mjFCi0oxXZKZEWJs\");
 }
}

AndroidManifest.

<?  version=\"1.0\" encoding=\"utf-8\"?>
<manifest  ns:android=\"http://schemas.android.com/apk/res/android\"
    ns:tools=\"http://schemas.android.com/tools\"
   package=\"com.sn.qqlogin\">

 <!--友盟所用的权限-->
 <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.READ_LOGS\"
      tools:ignore=\"ProtectedPermissions\"/>
 <uses-permission android:name=\"android.permission.CALL_PHONE\"/>
 <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>
 <uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>
 <uses-permission android:name=\"android.permission.GET_TASKS\"/>

 <application
  android:name=\".MyAPP\"
  android:allowBackup=\"true\"
  android:icon=\"@mipmap/ic_launcher\"
  android:label=\"@string/app_name\"
  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>

  <!--配置友盟上你应用注册的Key值,替换value-->
  < -data
   android:name=\"UMENG_APPKEY\"
   android:value=\"573f0e9267e58e8e48001545\">
  </ -data>

  <!-- 友盟所需配置的Activity信息-->
  <!--注意:在自定义Application中的keyID必须要和清单文件的AuthActivity下的scheme=\"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=\"tencent1106036236\"/>
   </intent-filter>
  </activity>
  <activity
   android:name=\"com.umeng.qq.tencent.AssistActivity\"
   android:configChanges=\"orientation|keyboardHidden|screenSize\"
   android:screenOrientation=\"portrait\"
   android:theme=\"@android:style/Theme.Translucent.No Bar\"/>
 </application>
</manifest>

build.gradle

signingConfigs {
  debug {
   storeFile file(\'debug.keystore\')
   storePassword \"android\"
   keyAlias \"androiddebugkey\"
   keyPassword \"android\"
  }
 }
 
compile files(\'libs/SocialSDK_QQ_Simplify.jar\')
 compile files(\'libs/umeng_social_api.jar\')
 compile files(\'libs/umeng_social_net.jar\')
 compile files(\'libs/umeng_social_shareboard.jar\')
 compile files(\'libs/umeng_social_tool.jar\')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

收藏 打印