项目实战工具类(一):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、手机号判断

工具类:

  1 import java.io.File;
2 import java.util.ArrayList;
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Map;
6 import java.util.regex.Matcher;
7 import java.util.regex.Pattern;
8
9 import android.content.Context;
10 import android.content.Intent;
11 import android.content.pm.ApplicationInfo;
12 import android.content.pm.PackageInfo;
13 import android.content.pm.PackageManager;
14 import android.content.pm.PackageManager.NameNotFoundException;
15 import android.content.pm.PermissionGroupInfo;
16 import android.content.pm.PermissionInfo;
17 import android.content.pm.ResolveInfo;
18 import android.content.res.Configuration;
19 import android.net.Uri;
20 import android.os.Environment;
21 import android.os.StatFs;
22 import android.telephony.TelephonyManager;
23 import android.util.TypedValue;
24 import android.view.WindowManager;
25
26 public class PhoneUtil {
27 private static PhoneUtil phoneUtil;
28
29 public static PhoneUtil getInstance() {
30 if (phoneUtil == null) {
31 synchronized (PhoneUtil.class) {
32 if (phoneUtil == null) {
33 phoneUtil = new PhoneUtil();
34 }
35 }
36 }
37 return phoneUtil;
38 }
39
40 /**
41 * 获取手机系统版本号
42 *
43 * @return
44 */
45 public int getSDKVersionNumber() {
46 int sdkVersion;
47 try {
48 sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK_INT);
49 } catch (NumberFormatException e) {
50 e.printStackTrace();
51 sdkVersion = 0;
52 }
53 return sdkVersion;
54 }
55
56 /**
57 * 获取手机型号
58 */
59 public String getPhoneModel() {
60 return android.os.Build.MODEL;
61 }
62
63 /**
64 * 获取手机宽度
65 */
66 @SuppressWarnings("deprecation")
67 public int getPhoneWidth(Context context) {
68 WindowManager wm = (WindowManager) context
69 .getSystemService(Context.WINDOW_SERVICE);
70 return wm.getDefaultDisplay().getWidth();
71 }
72
73 /**
74 * 获取手机高度
75 *
76 * @param context
77 */
78 @SuppressWarnings("deprecation")
79 public int getPhoneHeight(Context context) {
80 WindowManager wm = (WindowManager) context
81 .getSystemService(Context.WINDOW_SERVICE);
82 return wm.getDefaultDisplay().getHeight();
83 }
84
85 /**
86 * 获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID.
87 *
88 * @param context
89 */
90 public String getPhoneImei(Context context) {
91 TelephonyManager tm = (TelephonyManager) context
92 .getSystemService(Context.TELEPHONY_SERVICE);
93 if (tm == null)
94 return null;
95 return tm.getDeviceId();
96 }
97
98 /**
99 * 获取手机sim卡号
100 *
101 * @param context
102 */
103 public String getPhoneSim(Context context) {
104 TelephonyManager tm = (TelephonyManager) context
105 .getSystemService(Context.TELEPHONY_SERVICE);
106 if (tm == null)
107 return null;
108 return tm.getSubscriberId();
109 }
110
111 /**
112 * 获取手机号
113 *
114 * @param context
115 */
116 public String getPhoneNum(Context context) {
117 TelephonyManager tm = (TelephonyManager) context
118 .getSystemService(Context.TELEPHONY_SERVICE);
119 if (tm == null)
120 return null;
121 return tm.getLine1Number();
122 }
123
124 /**
125 * 判断sd卡是否挂载
126 */
127 public boolean isSDCardMount() {
128 if (android.os.Environment.getExternalStorageState().equals(
129 android.os.Environment.MEDIA_MOUNTED)) {
130 return true;
131 } else {
132 return false;
133 }
134 }
135
136 /**
137 * 获取sd卡剩余空间的大小
138 */
139 @SuppressWarnings("deprecation")
140 public long getSDFreeSize() {
141 File path = Environment.getExternalStorageDirectory(); // 取得SD卡文件路径
142 StatFs sf = new StatFs(path.getPath());
143 long blockSize = sf.getBlockSize(); // 获取单个数据块的大小(Byte)
144 long freeBlocks = sf.getAvailableBlocks();// 空闲的数据块的数量
145 // 返回SD卡空闲大小
146 return (freeBlocks * blockSize) / 1024 / 1024; // 单位MB
147 }
148
149 /**
150 * 获取sd卡空间的总大小
151 */
152 @SuppressWarnings("deprecation")
153 public long getSDAllSize() {
154 File path = Environment.getExternalStorageDirectory(); // 取得SD卡文件路径
155 StatFs sf = new StatFs(path.getPath());
156 long blockSize = sf.getBlockSize(); // 获取单个数据块的大小(Byte)
157 long allBlocks = sf.getBlockCount(); // 获取所有数据块数
158 // 返回SD卡大小
159 return (allBlocks * blockSize) / 1024 / 1024; // 单位MB
160 }
161
162 /**
163 * 判断是否是平板
164 */
165 public boolean isTablet(Context context) {
166 return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
167 }
168
169 /**
170 * 判断一个apk是否安装
171 *
172 * @param context
173 * @param packageName
174 */
175 public boolean isApkInstalled(Context context, String packageName) {
176 PackageManager pm = context.getPackageManager();
177 try {
178 pm.getPackageInfo(packageName, 0);
179 } catch (PackageManager.NameNotFoundException e) {
180 return false;
181 }
182 return true;
183 }
184
185 /**
186 * 拨打电话
187 *
188 * @param context
189 * @param phoneNum
190 */
191 public void call(Context context, String phoneNum) throws Exception {
192 if (phoneNum != null && !phoneNum.equals("")) {
193 Uri uri = Uri.parse("tel:" + phoneNum);
194 Intent intent = new Intent(Intent.ACTION_DIAL, uri);
195 context.startActivity(intent);
196 }
197 }
198
199 /**
200 * 打开网页
201 */
202 public void openWeb(Context context, String url) {
203 try {
204 Uri uri = Uri.parse(url);
205 context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
206 } catch (Exception e) {
207 e.printStackTrace();
208 }
209 }
210
211 /**
212 * 获取应用权限 名称列表
213 */
214 public String[] getAppPermissions(Context context)
215 throws NameNotFoundException {
216 PackageManager pm = context.getPackageManager();
217 PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(),
218 PackageManager.GET_PERMISSIONS);
219 return getAppPermissions(packageInfo);
220 }
221
222 public String[] getAppPermissions(PackageInfo packageInfo)
223 throws NameNotFoundException {
224 return packageInfo.requestedPermissions;
225 }
226
227 /**
228 * 获取手机内安装的应用
229 */
230 public List<PackageInfo> getInstalledApp(Context context) {
231 PackageManager pm = context.getPackageManager();
232 return pm.getInstalledPackages(0);
233 }
234
235 /**
236 * 获取手机安装非系统应用
237 */
238 @SuppressWarnings("static-access")
239 public List<PackageInfo> getUserInstalledApp(Context context) {
240 List<PackageInfo> infos = getInstalledApp(context);
241 List<PackageInfo> apps = new ArrayList<PackageInfo>();
242 for (PackageInfo info : infos) {
243 if ((info.applicationInfo.flags & info.applicationInfo.FLAG_SYSTEM) <= 0) {
244 apps.add(info);
245 }
246 }
247 infos.clear();
248 infos = null;
249 return apps;
250 }
251
252 /**
253 * 获取安装应用的信息
254 */
255 public Map<String, Object> getInstalledAppInfo(Context context,
256 PackageInfo info) {
257 Map<String, Object> appInfos = new HashMap<String, Object>();
258 PackageManager pm = context.getPackageManager();
259 ApplicationInfo aif = info.applicationInfo;
260 appInfos.put("icon", pm.getApplicationIcon(aif));
261 appInfos.put("lable", pm.getApplicationLabel(aif));
262 appInfos.put("packageName", aif.packageName);
263 return appInfos;
264 }
265
266 /**
267 * 打开指定包名的应用
268 */
269 public void startAppPkg(Context context, String pkg) {
270 Intent startIntent = context.getPackageManager()
271 .getLaunchIntentForPackage(pkg);
272 startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
273 context.startActivity(startIntent);
274 }
275
276 /**
277 * 卸载指定包名的应用
278 */
279 public void unInstallApk(Context context, String packageName) {
280 Uri uri = Uri.parse("package:" + packageName);
281 Intent intent = new Intent(Intent.ACTION_DELETE);
282 intent.setData(uri);
283 context.startActivity(intent);
284 }
285
286 /**
287 * 手机号判断
288 */
289 public static boolean isMobileNO(String mobile) {
290 Pattern p = Pattern
291 .compile("^((145|147)|(15[^4])|(17[0-9])|((13|18)[0-9]))\\d{8}$");
292 Matcher m = p.matcher(mobile);
293 return m.matches();
294 }
295
296 }

(转载)项目实战工具类(一):PhoneUtil(手机信息相关)的更多相关文章

  1. 项目实战工具类(一):PhoneUtil(手机信息相关)

    可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID. 6.获取手机sim卡 ...

  2. 项目实战工具类(二):ZipUtils(压缩/解压缩文件相关)

    import android.content.Context; import android.util.Log; import java.io.File; import java.io.FileInp ...

  3. 一个使用命令行编译Android项目的工具类

    一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...

  4. 【转载】C#工具类:人民币金额转换为中文大写

    在涉及到金融业务这一块的系统设计中,时常能够遇到的情况是需要将阿拉伯数字的人民币金额自动转换为中文的大写金额.现在互联网上也有很多网站提供此类服务,只要你输入人民币的阿拉伯数字金额,输入后自动给你转换 ...

  5. 【转载】C#工具类:Json操作帮助类

    Json序列化和反序列化在程序开发中时常会遇到,在C#中可以使用很多种方法实现对数据的Json序列化和反序列化,封装一个Json操作工具类来简化相应的操作,该工具类中包含以下功能:对象转JSON.数据 ...

  6. 【转载】 C#工具类:Csv文件转换类

    CSV是逗号分隔值格式的文件,其文件以纯文本形式存储表格数据(数字和文本).CSV文件由任意数目的记录组成,记录间以某种换行符分隔:每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号 ...

  7. 【转载】C#工具类:FTP操作辅助类FTPHelper

    FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样.可以通过C#中的FtpWebRequest类.NetworkCredential类.We ...

  8. c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习

    c#中@标志的作用   参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...

  9. Spring统一返回Json工具类,带分页信息

    前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本. 此Json响应工具类,支持带分页信息,支持泛型,支持Htt ...

随机推荐

  1. 在Maven中引入spring的DAO、DOMAIN、CONTROLLER、VIEW

    除了mysql外麻雀虽小,五脏俱全. 参照之前的博客建立好的maven项目如图. 第一步 : 向maven项目中的pom文件添加依赖 ,然后maven install

  2. 常用相关linux命令

    查看进程netstat -tnlp | egrep "(9097)" lsof -i:9097 ps -ef | grep kafka 观察句柄变化lsof -p $pid | w ...

  3. C# 正则表达式

    C# 正则表达式 正则表达式 是一种匹配输入文本的模式..Net 框架提供了允许这种匹配的正则表达式引擎.模式由一个或多个字符.运算符和结构组成. 定义正则表达式 下面列出了用于定义正则表达式的各种类 ...

  4. Jquery 随笔

    jQuery中 遍历 var arr = ['a','b','c'];    $.each(arr,function(k,v){    console.log(k); //键 console.log( ...

  5. spring MVC +freemarker + easyui 实现sql查询和执行小工具总结

    项目中,有时候线下不能方便的连接项目中的数据源时刻,大部分的问题定位和处理都会存在难度,有时候,一个小工具就能实时的查询和执行当前对应的数据源的库.下面,就本人在项目中实际开发使用的小工具,实时的介绍 ...

  6. VB入门在线视频教程大全学习

    课程目录 9分钟47秒 课时1第一课:怎么编写程序 14分钟1秒 课时1第十七课第1节:文件读写的几种方式 14分钟14秒 课时2第二课:什么是变量和变量类型 19分钟24秒 课时3第三课:变量的声明 ...

  7. 理解UIView的绘制

    界面的绘制和渲染 UIView是如何到显示的屏幕上的. 这件事要从RunLoop开始,RunLoop是一个60fps的回调,也就是说每16.7ms绘制一次屏幕,也就是我们需要在这个时间内完成view的 ...

  8. CorelDRAW教程:怎样绘制制作箭头流程图?

    箭头流程图主要由矢量图和连接符组成,通过图形之间的顺序阐述的一个过程,应用也是非常广泛,有些软件中会自带流程图,对于CDR这款矢量绘图软件来说,手动制作流程图是简单且高效的.首先CorelDRAW中就 ...

  9. java文件名与class关系

    class与文件名没有必要关系但是public class是要绝对保持一致 例如:class test{ public static void main(String args[]){ System. ...

  10. mybatis中if及concat函数的使用