判断设备是否为手机
public static boolean isPhone() {
TelephonyManager tm = (TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
return tm != null && tm.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE;
}
获取设备id
//<uses-permission android:name="android.permission.READ_PHONE_STATE" />}</p>
@SuppressLint("HardwareIds")
@RequiresPermission(READ_PHONE_STATE)
public static String getDeviceId() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
return tm != null ? tm.getDeviceId() : null;
}
获取手机IMEI(需要权限)
//<uses-permission android:name="android.permission.READ_PHONE_STATE" />}
@SuppressLint("HardwareIds")
@RequiresPermission(READ_PHONE_STATE)
public static String getIMEI() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return tm != null ? tm.getImei() : null;
}
return tm != null ? tm.getDeviceId() : null;
}
获取手机MEID(需要权限)
//<uses-permission android:name="android.permission.READ_PHONE_STATE" />}</p>
@SuppressLint("HardwareIds")
@RequiresPermission(READ_PHONE_STATE)
public static String getMEID() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return tm != null ? tm.getMeid() : null;
} else {
return tm != null ? tm.getDeviceId() : null;
}
}
获取手机SubscriberId(需要权限)
//<uses-permission android:name="android.permission.READ_PHONE_STATE" />
@SuppressLint("HardwareIds")
@RequiresPermission(READ_PHONE_STATE)
public static String getIMSI() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
return tm != null ? tm.getSubscriberId() : null;
}
获取手机制式,如GSM,CDMA
//TelephonyManager#PHONE_TYPE_NONE
//TelephonyManager#PHONE_TYPE_GSM }
//TelephonyManager#PHONE_TYPE_CDMA}
//TelephonyManager#PHONE_TYPE_SIP }
public static int getPhoneType() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
return tm != null ? tm.getPhoneType() : -1;
}
判断sd卡是否准备好
public static boolean isSimCardReady() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
return tm != null && tm.getSimState() == TelephonyManager.SIM_STATE_READY;
}
获取手机SIM名称
//return the sim operator name
public static String getSimOperatorName() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
return tm != null ? tm.getSimOperatorName() : null;
}
获取手机运营商所属
public static String getSimOperatorByMnc() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
String operator = tm != null ? tm.getSimOperator() : null;
if (operator == null) return null;
switch (operator) {
case "46000":
case "46002":
case "46007":
return "中国移动";
case "46001":
return "中国联通";
case "46003":
return "中国电信";
default:
return operator;
}
}
获取手机信息,包括网络、SIM信息(需要权限)
//<uses-permission android:name="android.permission.READ_PHONE_STATE"
@SuppressLint("HardwareIds")
@RequiresPermission(READ_PHONE_STATE)
public static String getPhoneStatus() {
TelephonyManager tm =
(TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE);
if (tm == null) return "";
String str = "";
str += "DeviceId(IMEI) = " + tm.getDeviceId() + "\n";
str += "DeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion() + "\n";
str += "Line1Number = " + tm.getLine1Number() + "\n";
str += "NetworkCountryIso = " + tm.getNetworkCountryIso() + "\n";
str += "NetworkOperator = " + tm.getNetworkOperator() + "\n";
str += "NetworkOperatorName = " + tm.getNetworkOperatorName() + "\n";
str += "NetworkType = " + tm.getNetworkType() + "\n";
str += "PhoneType = " + tm.getPhoneType() + "\n";
str += "SimCountryIso = " + tm.getSimCountryIso() + "\n";
str += "SimOperator = " + tm.getSimOperator() + "\n";
str += "SimOperatorName = " + tm.getSimOperatorName() + "\n";
str += "SimSerialNumber = " + tm.getSimSerialNumber() + "\n";
str += "SimState = " + tm.getSimState() + "\n";
str += "SubscriberId(IMSI) = " + tm.getSubscriberId() + "\n";
str += "VoiceMailNumber = " + tm.getVoiceMailNumber() + "\n";
return str;
}
打电话,调用拨号界面
public static void dial(final String phoneNumber) {
Utils.getApp().startActivity(getDialIntent(phoneNumber, true));
}
public static Intent getDialIntent(final String phoneNumber, final boolean isNewTask) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phoneNumber));
return getIntent(intent, isNewTask);
}
private static Intent getIntent(final Intent intent, final boolean isNewTask) {
return isNewTask ? intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) : intent;
}
打电话(需要权限)
//<uses-permission android:name="android.permission.CALL_PHONE" />
@RequiresPermission(CALL_PHONE)
public static void call(final String phoneNumber) {
Utils.getApp().startActivity(getCallIntent(phoneNumber, true));
}
public static Intent getCallIntent(final String phoneNumber, final boolean isNewTask) {
Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:" + phoneNumber));
return getIntent(intent, isNewTask);
}
private static Intent getIntent(final Intent intent, final boolean isNewTask) {
return isNewTask ? intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) : intent;
}
发送短信
public static void sendSms(final String phoneNumber, final String content) {
Utils.getApp().startActivity(getSendSmsIntent(phoneNumber, content, true));
}
public static Intent getSendSmsIntent(final String phoneNumber,
final String content,
final boolean isNewTask) {
Uri uri = Uri.parse("smsto:" + phoneNumber);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", content);
return getIntent(intent, isNewTask);
}
发送静默短信息(需要权限)
//uses-permission android:name="android.permission.SEND_SMS
@RequiresPermission(SEND_SMS)
public static void sendSmsSilent(final String phoneNumber, final String content) {
if (StringUtils.isEmpty(content)) return;
PendingIntent sentIntent = PendingIntent.getBroadcast(Utils.getApp(), 0, new Intent(), 0);
SmsManager smsManager = SmsManager.getDefault();
if (content.length() >= 70) {
List<String> ms = smsManager.divideMessage(content);
for (String str : ms) {
smsManager.sendTextMessage(phoneNumber, null, str, sentIntent, null);
}
} else {
smsManager.sendTextMessage(phoneNumber, null, content, sentIntent, null);
}
}