/**
* 手机组件调用工具类
*
* @author
*/
public final class PhoneUtil {
private static long lastClickTime;
/**
* Don't let anyone instantiate this class.
*/
private PhoneUtil() {
throw new Error("Do not need instantiate!");
}
public static void callViaSystem(Context ctx, String number) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + number));
ctx.startActivity(intent);
}
/**
* 调用系统发短信界面
*
* @param activity Activity
* @param phoneNumber 手机号码
* @param smsContent 短信内容
*/
public static void sendMessage(Context activity, String phoneNumber, String smsContent) {
if (phoneNumber == null || phoneNumber.length() < 4) {
return;
}
Uri uri = Uri.parse("smsto:" + phoneNumber);
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", smsContent);
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(it);
}
/**
* 判断是否为连击
*
* @return boolean
*/
public static boolean isFastDoubleClick() {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (0 < timeD && timeD < 500) {
return true;
}
lastClickTime = time;
return false;
}
/**
* 获取手机型号
*
* @return String
*/
public static String getMobileModel() {
try {
// 手机型号
String model = android.os.Build.MODEL;
return model;
} catch (Exception e) {
return "未知";
}
}
/**
* 获取手机品牌
*
* @return String
*/
public static String getMobileBrand() {
try {
// android系统版本号
String brand = android.os.Build.BRAND;
return brand;
} catch (Exception e) {
return "未知";
}
}
public static String getIMEI(Context context) {
TelephonyManager phoneMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String devId = phoneMgr.getDeviceId();
if (devId == null) {
devId = "null";
}
return devId;
}
/**
* 拍照打开照相机!
*
* @param requestcode 返回值
* @param activity 上下文
* @param fileName 生成的图片文件的路径
*/
public static void toTakePhoto(int requestcode, Activity activity, String fileName) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra("camerasensortype", 2);// 调用前置摄像头
intent.putExtra("autofocus", true);// 自动对焦
intent.putExtra("fullScreen", false);// 全屏
intent.putExtra("showActionIcons", false);
try {//创建一个当前任务id的文件然后里面存放任务的照片的和路径!这主文件的名字是用uuid到时候在用任务id去查路径!
File file = new File(fileName);
if (!file.exists()) {//如果这个文件不存在就创建一个文件夹!
file.mkdirs();
}
Uri uri = Uri.fromFile(new File(fileName));
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
activity.startActivityForResult(intent, requestcode);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 打开相册
*
* @param requestcode 响应码
* @param activity 上下文
*/
public static void toTakePicture(int requestcode, Activity activity) {
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
activity.startActivityForResult(intent, requestcode);
}
public static void toWihteList(Context context) {
Intent intent = new Intent();
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(POWER_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (pm.isIgnoringBatteryOptimizations(packageName))
intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
else {
intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
}
}
context.startActivity(intent);
}
public static void goToSystermAddressBook(Activity activity, int requestCode) {
Uri uri = Uri.parse("content://contacts/people");
Intent intent = new Intent(Intent.ACTION_PICK, uri);
activity.startActivityForResult(intent, requestCode);
}
public static String[] getPhoneContacts(Activity activity, Uri uri) {
String[] contact = new String[2];
//得到ContentResolver对象
ContentResolver cr = activity.getContentResolver();
//取得电话本中开始一项的光标
Cursor cursor = cr.query(uri, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
//取得联系人姓名
int nameFieldColumnIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
contact[0] = cursor.getString(nameFieldColumnIndex);
//取得电话号码
String ContactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
if (phone != null) {
phone.moveToFirst();
contact[1] = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phone.close();
cursor.close();
} else {
return null;
}
return contact;
}
/**
* @param context CALL_STATE_OFFHOOK
* CALL_STATE_RINGING
* @return true 无系统通话
*/
public static boolean isTelephonyIDLE(Context context) {
boolean calling = false;
TelephonyManager telephonyManager = (TelephonyManager) context.getApplicationContext().
getSystemService(Context.TELEPHONY_SERVICE);
if (TelephonyManager.CALL_STATE_IDLE == telephonyManager.getCallState()) {
calling = true;
}
return calling;
}
/**
* 获取设备厂商
* <p>如Xiaomi</p>
*
* @return 设备厂商
*/
public static String getManufacturer() {
return Build.MANUFACTURER;
}
/**
* 获取设备型号
* <p>如MI2SC</p>
*
* @return 设备型号
*/
public static String getModel() {
String model = Build.MODEL;
if (model != null) {
model = model.trim().replaceAll("\\s*", "");
} else {
model = "";
}
return model;
}
/**
* 获取设备系统版本号
*
* @return 设备系统版本号
*/
public static int getSDKVersion() {
return android.os.Build.VERSION.SDK_INT;
}
}