/**
* 获取用户账号信息
* <p>
* 所需权限:android.permission.GET_ACCOUNTS
*
* @param context Context
*/
public void getAccountInfo(Context context) {
AccountManager accountManager = AccountManager.get(context);
Account[] accounts = accountManager.getAccounts();
for (Account account : accounts) {
// 账号名字
String accountName = account.name;
// 账号类型
String accountType = account.type;
Log.i(TAG, "accountName = " + accountName);
Log.i(TAG, "accountType = " + accountType);
}
}
三、网络相关信息
1、获取用户使用WiFi时的网络连接信息
/**
* 获取用户使用WiFi时的网络连接信息
*
* @param context Context
*/
public void getWifiNetInfo(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
// wifi状态,返回2或者3表示wifi可用
int status = wifiManager.getWifiState();
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
// mac地址
String macAddress = wifiInfo.getMacAddress();
// 返回基本服务集标识符(BSSID)当前的访问点。目前如果没有网络连接,该标识符返回0
String bissId = wifiInfo.getBSSID();
// 获取Ip地址
int ipAddress = wifiInfo.getIpAddress();
// 每个配置的网络都有一个唯一的标识,用于识别网络上执行操作时的请求者。
// 这个方法返回当前连接网络的ID
int networkId = wifiInfo.getNetworkId();
// 返回当前的接收信号强度
int rssi = wifiInfo.getRssi();
// 当前的服务集标识符
String ssId = wifiInfo.getSSID();
// 当前的链接速度(网速),单位Mbps
int linkSpeed = wifiInfo.getLinkSpeed();
Log.i(TAG, "status = " + status);
Log.i(TAG, "macAddress = " + macAddress);
Log.i(TAG, "bissId = " + bissId);
Log.i(TAG, "ipAddress = " + ipAddress);
Log.i(TAG, "networkId = " + networkId);
Log.i(TAG, "rssi = " + rssi);
Log.i(TAG, "ssId = " + ssId);
Log.i(TAG, "linkSpeed = " + linkSpeed);
}
2、获取用户移动设备的联网信息
public void getTelephonyInfo(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
// 手机串号:GSM手机的IMEI 和 CDMA手机的 MEID.
String deviceId = telephonyManager.getDeviceId();
// 返回设备的软件版本号,例如GSM手机的IMEI/SV
String imei = telephonyManager.getDeviceSoftwareVersion();
/* 手机类型:
* @see #PHONE_TYPE_NONE // 无信号
* @see #PHONE_TYPE_GSM // GSM信号
* @see #PHONE_TYPE_CDMA // CDMA信号
* @see #PHONE_TYPE_SIP // SIP信号
*/
int phoneType = telephonyManager.getPhoneType();
String imsi = telephonyManager.getSubscriberId();
// 运营商名称(仅当用户已在网络注册时有效,在CDMA网络中结果也许不可靠)
String networkOperatorName = telephonyManager.getNetworkOperatorName();
// 注册网络的MCC+MNC
String networkOperator = telephonyManager.getNetworkOperator();
// 网络国家代码,MCC
String networkCountryIso = telephonyManager.getNetworkCountryIso();
/*
* 当前使用的网络类型:
* NETWORK_TYPE_UNKNOWN 网络类型未知 0
NETWORK_TYPE_GPRS GPRS网络 1
NETWORK_TYPE_EDGE EDGE网络 2
NETWORK_TYPE_UMTS UMTS网络 3
NETWORK_TYPE_HSDPA HSDPA网络 8
NETWORK_TYPE_HSUPA HSUPA网络 9
NETWORK_TYPE_HSPA HSPA网络 10
NETWORK_TYPE_CDMA CDMA网络,IS95A 或 IS95B. 4
NETWORK_TYPE_EVDO_0 EVDO网络, revision 0. 5
NETWORK_TYPE_EVDO_A EVDO网络, revision A. 6
NETWORK_TYPE_1xRTT 1xRTT网络 7
*/
int networkType = telephonyManager.getNetworkType();
// 当前网络是否处于漫游
boolean isNetworkRoaming = telephonyManager.isNetworkRoaming();
// 获取手机SIM卡的序列号
String simSerialNumber = telephonyManager.getSimSerialNumber();
// 是否有ICC卡(sim卡)
boolean isSim = telephonyManager.hasIccCard();
/*
* 获取Sim卡状态,SIM的状态信息:
SIM_STATE_UNKNOWN 未知状态 0
SIM_STATE_ABSENT 没插卡 1
SIM_STATE_PIN_REQUIRED 锁定状态,需要用户的PIN码解锁 2
SIM_STATE_PUK_REQUIRED 锁定状态,需要用户的PUK码解锁 3
SIM_STATE_NETWORK_LOCKED 锁定状态,需要网络的PIN码解锁 4
SIM_STATE_READY 就绪状态 5
*/
int simState = telephonyManager.getSimState();
// 获取ISO国家码,相当于提供SIM卡的国家码。
String simCountryIso = telephonyManager.getSimCountryIso();
// 通话状态:无活动、响铃、摘机(接通)
int callState = telephonyManager.getCallState();
// 获取本机的手机号(有些手机号无法获取,是因为运营商在SIM中没有写入手机号)
String phoneNumber = telephonyManager.getLine1Number();
//获取语音邮件号码:
String voiceMailNumber = telephonyManager.getVoiceMailNumber();
/*
* 获取数据连接的活动类型
*
* @see #DATA_ACTIVITY_NONE
* @see #DATA_ACTIVITY_IN // 下行流量
* @see #DATA_ACTIVITY_OUT // 上行流量
* @see #DATA_ACTIVITY_INOUT
* @see #DATA_ACTIVITY_DORMANT // 休眠
*/
int dataActivty = telephonyManager.getDataActivity();
}
四、设备信息类
public void getDeviceInfo(Context context) {