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

简介: 可以使用的功能: 1、获取手机系统版本号 2、获取手机型号 3、获取手机宽度 4、获取手机高度 5、获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID. 6、获取手机sim卡号 7、获取手机号 8、判断sd卡是否挂载 9、获取sd卡剩余空间...

可以使用的功能:

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 }

 

相关文章
Hutool 工具:轻松校验手机号、身份证号、邮箱、统一社会信用代码、车牌号、车架号等信息,省时省心!
Hutool 工具:轻松校验手机号、身份证号、邮箱、统一社会信用代码、车牌号、车架号等信息,省时省心!
|
6月前
|
XML Java Android开发
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
Android Studio开发之使用内容组件Content获取通讯信息讲解及实战(附源码 包括添加手机联系人和发短信)
429 0
|
3月前
|
存储 JavaScript 前端开发
看过来!准确直观显示手机充电信息的充电统计软件!
基于自制充电统计App,多设备用户可远程查看各设备充电数据。在软件内可以查看预估充电容量等信息
|
5月前
|
数据安全/隐私保护 SEO
蚂蚁分类信息系统二开仿么么街货源客模板微商货源网源码(带手机版)
网站采用蚂蚁分类信息系统二次开发,模板仿么么街货源客模板,微商货源网定制版。 模板设计风格简洁,分类信息采用列表形式发布,这种设计方式非常符合度娘 SEO 规则。收录效果是杠杠的。 这个网站风格目前是用来做货源推广使用的,但不仅限于货源网站。后台无加密,分类目录随意修改。 无论你是想做地方分类信息,二手市场,或者垂直行业信息分类平台都是不错的选择。
43 2
蚂蚁分类信息系统二开仿么么街货源客模板微商货源网源码(带手机版)
|
3月前
|
数据采集 Python
[python]爬取手机号码前缀和地区信息
[python]爬取手机号码前缀和地区信息
|
4月前
|
JavaScript
vue + element UI【实战】音乐播放器/语音条(内含音频的加载、控制,事件监听,信息获取,手机网页阴影的去除等技巧)
vue + element UI【实战】音乐播放器/语音条(内含音频的加载、控制,事件监听,信息获取,手机网页阴影的去除等技巧)
74 1
|
5月前
|
PHP
PHP地方门户分类信息网站源码讯客分类信息系统源码(含手机版)
1.上传程序到网站根目录,访问http://域名/install/index.php 进行安装,不要直接打开网址,先直接安装; 2.安装完成后 后台恢复数据即可 默认帐号密码都是admin http://域名/admin/ 3.不要删除任何文件,因为删除文件或者修改代码可能造成错误
260 0
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的品牌手机销售信息系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的品牌手机销售信息系统附带文章和源代码部署视频讲解等
34 0
|
6月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的品牌手机销售信息系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的品牌手机销售信息系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
移动开发 JavaScript 前端开发
数据可视化大屏百度地图手机端标注开发实战案例解析(jsAPI接口、标注分类图片、文本标签、分类筛选、自适应高度信息弹窗、PHP后端API)
数据可视化大屏百度地图手机端标注开发实战案例解析(jsAPI接口、标注分类图片、文本标签、分类筛选、自适应高度信息弹窗、PHP后端API)
205 0