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

项目实战工具类(一):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      * @return44      */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) context69                 .getSystemService(Context.WINDOW_SERVICE);70         return wm.getDefaultDisplay().getWidth();71     }72 73     /**74      * 获取手机高度75      * 76      * @param context77      */78     @SuppressWarnings("deprecation")79     public int getPhoneHeight(Context context) {80         WindowManager wm = (WindowManager) context81                 .getSystemService(Context.WINDOW_SERVICE);82         return wm.getDefaultDisplay().getHeight();83     }84 85     /**86      * 获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID.87      * 88      * @param context89      */90     public String getPhoneImei(Context context) {91         TelephonyManager tm = (TelephonyManager) context92                 .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 }
复制代码

转载于:https://www.cnblogs.com/liupengfei005257/p/7448705.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你写Linux I2C设备驱动

手把手教你写Linux I2C设备驱动 标签&#xff1a;Linux 设备 驱动 详解 i2c 原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/760020 Linux I2C驱动是嵌入…

HDR 成像技术学习(三)—— LOFIC

HDR 成像技术学习(一) HDR 成像技术学习(二) 我们拍摄的照片来自传感器上的像素,它们将光处理为电信号,组合起来输出画面。当捕捉对象亮度过强,大量电荷挤在单个像素内,生成的图像就会过曝。 LOFIC(Lateral Overflow Integration Capacitor,横向溢出集合电容…

[模板]平面最近点对

实现 将平面内点按$x$坐标排序,分治$x$坐标,设$retmin(f(l,mid),f(mid1,r))$, 将$x\in[mid-ret,midret]$内的点按$y$坐标排序,算每个点与相邻的$6$个点的距离找最优解即可. 时间复杂度:$O(nlogn)$. #define N 100005 #define INF 1e15 struct point{double x,y; }p[N]; inline …

人工智能与图像传感器

随着人工智能时代的来临,相应的芯片产品和行业也产生了相应的新方向。 在人工智能的各个分支中,机器视觉无疑是应用最广泛的方向,它支撑着诸如人脸检测、工业异常检测、手势识别等诸多重要的应用。顾名思义,机器视觉是使用机器学习/人工智能的方法来分析视觉信号,并且通过…

用户空间访问I2C设备驱动

2012-01-11 15:33:43标签&#xff1a;Linux I2C 字符设备 设备驱动 用户空间 原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/761830 关于Linux下如何编…

097实战 关于ETL的几种运行方式

一&#xff1a;代码部分 1.新建maven项目 2.添加需要的java代码   3.书写mapper类 4.书写runner类 二&#xff1a;运行方式 1.本地运行 2.集群运行 3.本地提交集群运行 三&#xff1a;本地运行方式 1.解压hadoop到本地 2.修改配置文件HADOOP_HOME 3.解压common的压缩包 4.将压…

模拟ssh, hashlib模块, struct模块, subprocess模块

一. 模拟ssh # 服务器端 import socket import subprocess # 系统操作server socket.socket()server.bind((127.0.0.1,8008))server.listen(5)while True:print("server is working.....")conn,addr server.accept()# 字节类型while True:# 针对window系统try:…

使用pssh进行并行批量操作

假如同时给上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,有什么简化运维管理的工具呢?在小型使用中我都是使用for循 环,数量巨大,一方面不确定操作是否成功,一方面for循环语句性能不好估计且是不是同步并行执行.&#xff0c;这类工具比如 pdsh&#xff0c;mussh&#…

图像清晰度评价函数

概述 图像清晰度是用来指导调焦机构找到正焦位置的评价函数。理想的清晰度评价曲线如下图所示,其中P 是评价函数最大值的位置,其对应正焦位置,P1 和P2 为正焦位置焦前和焦后采集到图像的清晰度评价结果。 为了指导调焦机构找到正焦位置,清晰度曲线须具有以下特点: 单…

Linux下读写芯片的I2C寄存器

Linux下读写芯片的I2C寄存器 2012-01-10 11:40:18 标签&#xff1a;Linux 寄存器 驱动 读写 I2C 原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/76096…

列表和表格---学习笔记02

第7章 列表和表格 7.1 有序列表<ol type"A"><li>这里是第1个li</li><li>这里是第2个li</li><li>这里是第3个li</li></ol> ol属性&#xff1a;type : 数字(1),大小写字母(A,a),大小写罗马数字(I,i)start: "起始…

(下)挖掘传统行业日志大数据的无限价值

&#xfffc;8 月 27 日晚上八点&#xff0c;七牛云高级解决方案架构师程雪松在 IT 大咖说进行了题为《挖掘传统行业日志大数据的无限价值》的直播&#xff0c;对传统行业运维常见困境和统一日志管理的必要性进行了深入解析&#xff0c;并通过 Pandora 的一些真实用户案例和大家…

CMOS图像传感器 —— ISOCELL

最近,外媒曝光了三星最新的CIS传感器路线图,路线图显示,三星在2亿像素之外已经规划2025年推出576MP像素的传感器,也就是5亿7千6百万像素。 若5.76亿像素的传感器推出,意味着手机传感器可媲美中高端单反水平了。三星没有提及这个5.76亿像素的传感器是怎样实现的。因…

LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)

Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum element. You may assume no duplicate exists in the array. 题目标签&#xff1a;Array, Binary Se…

YUV图像

YUV420P&#xff0c;Y&#xff0c;U&#xff0c;V三个分量都是平面格式&#xff0c;分为 I420 和 YV12 。 I420 格式和 YV12 格式的不同处在U平面和V平面的位置不同。在I420格式中&#xff0c;U平面紧跟在Y平面之后&#xff0c;然后才是V平面&#xff08;即&#xff1a;YUV&…

色调映射(Tone Mapping)

一、概述 虽然HDR 图像有较大的动态范围,能更细致地反映真实场景,但他的缺点也很明显。一是同尺寸的数据比低动态范围图像大,需要更大的存储空间与传输带宽。二是难以输出,目前大多数显示器、打印机等图形输出设备的动态范围要比普通的高动态范围图像小得多。。因此,色调映…

实用软件工具

1.突破百度网盘下载速度现在&#xff0c;使用 Aria2下载 Aria2-不限速全平台下载利器但是百度网盘账号会被限速 &#xff0c;冲会员解除正常限制网速2.Safari 预览&#xff0c;将网页转化为自定义尺寸 PDF 3.清除Xcode 缓存 删除模拟器运行缓存&#xff0c;找到Developer->…

[原创]Toolbar setNavigationIcon无效

最近在做一个Toolbar&#xff0c;setNavigationIcon()这个方法一直无效&#xff0c;说什么的都有&#xff0c;什么getSupportActionBar().setNavigationIcon()的&#xff0c;说设置style的&#xff0c;说放到setSupportActionBar()之后的。 其实没有说全&#xff0c;还应该放到…

YUV格式详解

分类&#xff1a; H.264 MPEG TV 2008-05-14 09:24 16181人阅读 评论(21) 收藏 举报 YUV是指亮度参量和色度参量分开表示的像素格式&#xff0c;而这样分开的好处就是不但可以避免相互干扰&#xff0c;还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说…

KVM安装、镜像创建(一)

环境准备 VMware Workstation Pro启动虚拟化 查看启动的系统是否支持vmx或svm grep -E (vmx|svm) /proc/cpuinfo 备注&#xff1a;操作系统centos 7 KVM安装 1、yum查看kvm安装包 yum list |grep kvm 2、安装 yum install -y qemu-kvm qemu-kvm-tools libvirt3、启动libvirtd s…