项目实战工具类(一):PhoneUtil(手机信息相关)
可以使用的功能:
1、获取手机系统版本号
2、获取手机型号
3、获取手机宽度
4、获取手机高度
5、获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID.
6、获取手机sim卡号
7、获取手机号
8、判断sd卡是否挂载
9、获取sd卡剩余空间的大小
10、获取sd卡空间的总大小
11、判断是否是平板
12、判断一个apk是否安装
13、拨打电话
14、打开网页
15、获取应用权限 名称列表
16、获取手机内安装的应用
17、获取手机安装非系统应用
18、获取安装应用的信息
19、打开指定包名的应用
20、卸载指定包名的应用
21、手机号判断
工具类:
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Environment;
import android.os.StatFs;
import android.telephony.TelephonyManager;
import android.util.TypedValue;
import android.view.WindowManager; public class PhoneUtil {
private static PhoneUtil phoneUtil; public static PhoneUtil getInstance() {
if (phoneUtil == null) {
synchronized (PhoneUtil.class) {
if (phoneUtil == null) {
phoneUtil = new PhoneUtil();
}
}
}
return phoneUtil;
} /**
* 获取手机系统版本号
*
* @return
*/
public int getSDKVersionNumber() {
int sdkVersion;
try {
sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK_INT);
} catch (NumberFormatException e) {
e.printStackTrace();
sdkVersion = 0;
}
return sdkVersion;
} /**
* 获取手机型号
*/
public String getPhoneModel() {
return android.os.Build.MODEL;
} /**
* 获取手机宽度
*/
@SuppressWarnings("deprecation")
public int getPhoneWidth(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
return wm.getDefaultDisplay().getWidth();
} /**
* 获取手机高度
*
* @param context
*/
@SuppressWarnings("deprecation")
public int getPhoneHeight(Context context) {
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
return wm.getDefaultDisplay().getHeight();
} /**
* 获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID.
*
* @param context
*/
public String getPhoneImei(Context context) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
if (tm == null)
return null;
return tm.getDeviceId();
} /**
* 获取手机sim卡号
*
* @param context
*/
public String getPhoneSim(Context context) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
if (tm == null)
return null;
return tm.getSubscriberId();
} /**
* 获取手机号
*
* @param context
*/
public String getPhoneNum(Context context) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
if (tm == null)
return null;
return tm.getLine1Number();
} /**
* 判断sd卡是否挂载
*/
public boolean isSDCardMount() {
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED)) {
return true;
} else {
return false;
}
} /**
* 获取sd卡剩余空间的大小
*/
@SuppressWarnings("deprecation")
public long getSDFreeSize() {
File path = Environment.getExternalStorageDirectory(); // 取得SD卡文件路径
StatFs sf = new StatFs(path.getPath());
long blockSize = sf.getBlockSize(); // 获取单个数据块的大小(Byte)
long freeBlocks = sf.getAvailableBlocks();// 空闲的数据块的数量
// 返回SD卡空闲大小
return (freeBlocks * blockSize) / 1024 / 1024; // 单位MB
} /**
* 获取sd卡空间的总大小
*/
@SuppressWarnings("deprecation")
public long getSDAllSize() {
File path = Environment.getExternalStorageDirectory(); // 取得SD卡文件路径
StatFs sf = new StatFs(path.getPath());
long blockSize = sf.getBlockSize(); // 获取单个数据块的大小(Byte)
long allBlocks = sf.getBlockCount(); // 获取所有数据块数
// 返回SD卡大小
return (allBlocks * blockSize) / 1024 / 1024; // 单位MB
} /**
* 判断是否是平板
*/
public boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
} /**
* 判断一个apk是否安装
*
* @param context
* @param packageName
*/
public boolean isApkInstalled(Context context, String packageName) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packageName, 0);
} catch (PackageManager.NameNotFoundException e) {
return false;
}
return true;
} /**
* 拨打电话
*
* @param context
* @param phoneNum
*/
public void call(Context context, String phoneNum) throws Exception {
if (phoneNum != null && !phoneNum.equals("")) {
Uri uri = Uri.parse("tel:" + phoneNum);
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
context.startActivity(intent);
}
} /**
* 打开网页
*/
public void openWeb(Context context, String url) {
try {
Uri uri = Uri.parse(url);
context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 获取应用权限 名称列表
*/
public String[] getAppPermissions(Context context)
throws NameNotFoundException {
PackageManager pm = context.getPackageManager();
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(),
PackageManager.GET_PERMISSIONS);
return getAppPermissions(packageInfo);
} public String[] getAppPermissions(PackageInfo packageInfo)
throws NameNotFoundException {
return packageInfo.requestedPermissions;
} /**
* 获取手机内安装的应用
*/
public List<PackageInfo> getInstalledApp(Context context) {
PackageManager pm = context.getPackageManager();
return pm.getInstalledPackages(0);
} /**
* 获取手机安装非系统应用
*/
@SuppressWarnings("static-access")
public List<PackageInfo> getUserInstalledApp(Context context) {
List<PackageInfo> infos = getInstalledApp(context);
List<PackageInfo> apps = new ArrayList<PackageInfo>();
for (PackageInfo info : infos) {
if ((info.applicationInfo.flags & info.applicationInfo.FLAG_SYSTEM) <= 0) {
apps.add(info);
}
}
infos.clear();
infos = null;
return apps;
} /**
* 获取安装应用的信息
*/
public Map<String, Object> getInstalledAppInfo(Context context,
PackageInfo info) {
Map<String, Object> appInfos = new HashMap<String, Object>();
PackageManager pm = context.getPackageManager();
ApplicationInfo aif = info.applicationInfo;
appInfos.put("icon", pm.getApplicationIcon(aif));
appInfos.put("lable", pm.getApplicationLabel(aif));
appInfos.put("packageName", aif.packageName);
return appInfos;
} /**
* 打开指定包名的应用
*/
public void startAppPkg(Context context, String pkg) {
Intent startIntent = context.getPackageManager()
.getLaunchIntentForPackage(pkg);
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
} /**
* 卸载指定包名的应用
*/
public void unInstallApk(Context context, String packageName) {
Uri uri = Uri.parse("package:" + packageName);
Intent intent = new Intent(Intent.ACTION_DELETE);
intent.setData(uri);
context.startActivity(intent);
} /**
* 手机号判断
*/
public static boolean isMobileNO(String mobile) {
Pattern p = Pattern
.compile("^((145|147)|(15[^4])|(17[0-9])|((13|18)[0-9]))\\d{8}$");
Matcher m = p.matcher(mobile);
return m.matches();
} }
项目实战工具类(一):PhoneUtil(手机信息相关)的更多相关文章
- (转载)项目实战工具类(一):PhoneUtil(手机信息相关)
项目实战工具类(一):PhoneUtil(手机信息相关) 可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 ...
- 项目实战工具类(二):ZipUtils(压缩/解压缩文件相关)
import android.content.Context; import android.util.Log; import java.io.File; import java.io.FileInp ...
- Spring统一返回Json工具类,带分页信息
前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本. 此Json响应工具类,支持带分页信息,支持泛型,支持Htt ...
- [C#] 常用工具类——应用程序属性信息访问类
using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespac ...
- 一个使用命令行编译Android项目的工具类
一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...
- Android开源项目发现--- 工具类快速开发篇(持续更新)
1. Guava Google的基于java1.6的类库集合的扩展项目 包括collections, caching, primitives support, concurrency librarie ...
- [原创]JAVA号码工具类:实现手机固话号码判断与区号截取
工具类说明 该工具类主要是用于判断号码的类型,如果是手机类型,则返回号码前7位,便于后面继续判断号码归属地:如果是固话类型,则截取固话的区号,同样也是为了后面判断号码的归属地. 在获取到这些信息之后, ...
- Android开源项目发现--- 工具类数据库ORM篇(持续更新)
orm的db工具类,简化建表.查询.更新.插入.事务.索引的操作 1. greenDAO Android Sqlite orm的db工具类 项目地址:https://github.com/greenr ...
- Android开源项目发现--- 工具类网络相关篇(持续更新)
1. Asynchronous Http Client for Android Android异步Http请求 项目地址:https://github.com/loopj/android-async- ...
随机推荐
- Android之SqlLite数据库使用
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库—SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据 ...
- 【前端攻略】最全面的水平垂直居中方案与flexbox布局
最近又遇到许多垂直居中的问题,这是Css布局当中十分常见的一个问题,诸如定长定宽或不定长宽的各类容器的垂直居中,其实都有很多种解决方案.而且在Css3的flexbox出现之后,解决各类居中问题变得更加 ...
- MySQL学习笔记十六:锁机制
1.数据库锁就是为了保证数据库数据的一致性在一个共享资源被并发访问时使得数据访问顺序化的机制.MySQL数据库的锁机制比较独特,支持不同的存储引擎使用不同的锁机制. 2.MySQL使用了三种类型的锁机 ...
- EntityFramework 7 开发纪录
博文目录: 暂时开发模式 Code First 具体体现 DbContext 配置 Entity 映射关联配置 Migration 问题纪录(已解决) 之前的一篇博文:EF7 Code First O ...
- [c++] Operator overloading
c++的操蛋属性:自己为一档,空一档,其他随意. UB_stack a; UB_stack b = a; // copy auto c = a; auto d {a}; // (or auto d = ...
- 云计算之路-阿里云上:从ASP.NET线程角度对“黑色30秒”问题的全新分析
在这篇博文中,我们抛开对阿里云的怀疑,完全从ASP.NET的角度进行分析,看能不能找到针对问题现象的更合理的解释. “黑色30秒”问题现象的主要特征是:排队的请求(Requests Queued)突增 ...
- 1Z0-053 争议题目解析704
1Z0-053 争议题目解析704 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 704.View the Exhibit and examine the data manipul ...
- (三)WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(核心)
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在上一节中我们知道了屏幕上一像素等于实际中多少单位长度(米或 ...
- StructureMap.dll 中的 GetInstance 重载 + 如何利用 反射动态创建泛型类
public static T GetInstance<T>(ExplicitArguments args); // // Summary: // Creates a new instan ...
- 通过手动创建统计信息优化sql查询性能案例
本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息 来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选 ...