`

获得手机上绑定的Google账号

阅读更多
1.5和1.6的系统里没有现成的方法,因而需要用到第三方的库

/**
 * use 3rd package to get Google Account
 * 
 * @param activity
 * @param requestCode
 */
private void getGoogleService(Activity activity, int requestCode) {
	try {
		for (Method ele : Class.forName(
			"com.google.android.googlelogin.GoogleLoginServiceHelper")
			.getMethods()) {
			try {
				if (ele.getName().equals("getAccount")) {
					ele.invoke(null, activity, requestCode, true);
				}
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				e.printStackTrace();
			}
		}
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	}
}


返回值需要用下面的方法获得
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	if (requestCode == REQUEST_GOOGLE_ACCOUNT) {
		String key = "accounts";
		String accounts[] = data.getExtras().getStringArray(key);
		if (accounts != null && accounts[0] != null) {
			String account = accounts[0];
		}
	}
}


这个方法需要在AndroidManifest.xml里增加
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />

2.0以后的版本,可以通过AccountManager来获得

/**
 * use Account Manager to get Google Account
 * 
 * @param activity
 */
private void getGoogleServiceWithAccountManager(Activity activity) {

	try {
		// declare class AccountManager
		Class MyAccountManager = Class.forName("android.accounts.AccountManager");
			
		// declare method getAccounts of AccountManager
		Method mGetAccounts = MyAccountManager.getDeclaredMethod("getAccounts");

		for (Method ele : MyAccountManager.getMethods()) {
			try {
				if (ele.getName().equals("get")) {
					// call AccountManager.get to create an instance
					Object obj = ele.invoke(null, activity);

					// call AccountManager.getAccount to get Account[]
					Object accounts[] = (Object[]) mGetAccounts.invoke(obj, null);
					if (accounts.length > 0) {
						// get the class member "name" of class Account
						Field f = accounts[0].getClass().getDeclaredField("name");

						// get the value of class member "name"
						this.mAccount = (String) f.get(accounts[0]);
					}
				}
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				e.printStackTrace();
			} catch (NoSuchFieldException e) {
				e.printStackTrace();
			}
		}
	} catch (SecurityException e) {
		e.printStackTrace();
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	} catch (NoSuchMethodException e) {
		e.printStackTrace();
	} finally {
		returnGoogleAccount();
	}
}


考虑到程序可能在低版本的机器上运行,所以方法调用都使用了反射

附件为自己写的代码(包含第三方库文件),写得不好,请多包涵
分享到:
评论

相关推荐

    华为HMA-AL00 HMA-TL00强制原方清除解锁帐号密码工具平台包.zip

    当手机进行恢复出厂设置后,系统会要求输入之前登录过的Google账户以验证所有权,防止他人恶意重置并使用设备。如果用户忘记了绑定的Google账户或密码,那么此工具包可能提供了解决之道。 接下来,我们来详细探讨...

    PHP谷歌验证器生成秘钥和验证

    谷歌验证器是谷歌公司... 不少割韭菜的项目需要使用到谷歌验证器,这个方法可以生成一个验证码(可以把验证码生成一个二维码,这样谷歌验证器就可以扫码直接绑定了),内置一个校验验证码的功能,可以匹配验证的结果。

    网络游戏-网络账户绑定方法及装置.zip

    例如,在游戏中,玩家可能会将他们的游戏账号与手机号或邮箱绑定,以便在忘记密码或遭受恶意攻击时能够快速找回账号。 网络账户绑定方法的核心在于身份验证。一种常见的实现方式是使用短信验证码。当玩家尝试绑定新...

    Google Chrome浏览器下载

    Google Chrome浏览器下载,谷歌浏览器(Google Chrome)是谷歌公司开发的一款免费的网络浏览器。...• 数据同步:Chrome浏览器通过与Google账号绑定,实现上网浏览数据跨设备自动同步,不论在手机还是电脑上浏

    使用Google App Engine架设网站.pdf

    Google App Engine 提供了一些开源项目源码供下载,也可以从其他兼容GAE的第三方网站获取源码。确保所选择的源码是与GAE相兼容的。 【搭建本地运行环境】 搭建本地运行环境需要安装Python和Google App Engine SDK。...

    Android操作系统WCDMA手机3G上网设置教程.docx

    用户可以直接在手机上下载并安装应用,无需通过电脑同步。 Android的一大优势是支持多任务处理,能够快速流畅地同时运行多个应用程序。教程中提到的G2手机在3G网络下上网体验良好,接近电脑上网的速度。 对于网络...

    andriod天气获取google案例

    在Android平台上,开发一款能够获取并显示天气信息的应用是一个常见的任务。这个案例“andriod天气获取google案例”提供了一种方法,通过调用Google的相关API来实现这一功能。下面,我们将深入探讨如何利用Android...

    新版手机QQ 更新了啥?.docx

    阅读中心是此次更新的一大特色,它与用户的账号绑定,使得用户可以在手机QQ中直接访问和管理阅读内容。这一举措是腾讯文学战略的一部分,旨在整合PC、无线门户、移动客户端阅读等多个渠道,利用手机QQ庞大的用户...

    华为c2829密码解锁令

    然而,如果用户忘记密码或者没有绑定谷歌账号,常规方法就无法解锁手机,这时就需要借助特定的解锁工具或命令。 “密码解锁令”通常是指一种特殊的代码或指令,用于绕过设备的锁屏密码限制。这种解锁方法一般适用于...

    四六级报名流程.pdf

    全国大学英语四六级考试(CET)报名流程涉及多个步骤,涉及到的信息有账号注册与登录、手机号绑定、资格信息查询与确认、CET6资格复核、报名信息保存、报考科目选择、报名信息查看等。下面是详细的知识点梳理: 1. ...

    Google验证器1

    如果手机丢失,你需要尽快解除设备上的验证器绑定,并通过备用验证方式(如短信或电子邮件接收的验证码)恢复对账户的访问。此外,定期备份密钥也很重要,以防意外情况发生。 总的来说,Google验证器1是Android用户...

    荣耀20荣耀V20解锁激活设备锁视频教程荣耀20V20解开账户ID锁ID号锁不记得密码清除方法流程.zip

    针对这个问题,尤其是对于荣耀20和荣耀V20这两款手机,本教程将提供详细的解锁激活设备锁以及清除ID账号锁的方法流程。以下是根据提供的信息整理出的关键步骤和注意事项: 1. **理解设备锁和ID锁**: - **设备锁**...

    吉利集团VDI用户手册v1.pdf

    最后,用户需要打开手机中的“Microsoft Authenticator”软件,单击右上角“+”,选择“其他(Google、Facebook 等)”,扫描电脑浏览器中的二维码。 二、 VDI 常用功能介绍 VDI 提供了多种功能,以满足用户的需求...

    谷歌浏览器书签同步码云插件

    谷歌浏览器书签同步码云插件是一款专为Google Chrome浏览器设计的扩展程序,旨在帮助用户实现书签的便捷管理和同步。这款插件的核心功能是将Chrome浏览器中的书签与码云(Gitee)服务进行整合,使得用户无论在何处...

    search-google-books:使用LiveDataMVVM测试数据绑定。 使用Google Books API

    在使用Google Books API时,我们需要先获取API密钥。注册Google开发者账号并启用Google Books API后,系统会分配一个唯一的API密钥。这个密钥将在我们的应用中用于请求数据。 接下来,我们需要创建一个网络接口...

    使用Google App Engine架设网站.docx

    要使用 Google App Engine,首先需要一个 Google 邮箱账号。注册过程包括访问 Google App Engine 的官方网站,登录邮箱,然后按照提示输入手机号码接收验证码。对于非英语使用者,可以使用 Google 工具栏进行页面...

    gitlab启动了双因子认证后,登录网站+下载代码操作指南

    - 使用Authenticator应用程序(如Google Authenticator或Microsoft Authenticator)扫描屏幕上的二维码,这将自动绑定你的GitLab账户。 - 输入Authenticator应用提供的6位数字验证码以及你的GitLab登录密码。 - ...

Global site tag (gtag.js) - Google Analytics