项目实战工具类(一):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- ...
随机推荐
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- 【开源】OSharp框架解说系列(3):扩展方法
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- 引用类型-Function类型
Function类型 定义函数的三种方式: 1.函数声明 function sum(num1,num2){ return num1 +num2; } 2.函数表达式 var sum = functio ...
- Python补充06 Python之道
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录 ...
- Objective-C中的委托(代理)模式
我个人更喜欢把委托(Delegate)模式称为代理(Proxy)模式.还是那句话,第一次接触代理模式是在Java中接触的,在Java中实现代理模式和接口是少不了的.当时学习Spring的时候用到了接口 ...
- C语言字符串匹配、goto语句、关机命令使用
1.程序执行修改窗口字体颜色命令: 2.程序执行修改窗口标题命令: 3.程序执行关机倒计时命令: 4.根据提示输入团队名称JYHACK TEAM 根据提示输入团队网址:http://bbs.jyhac ...
- 不在 sudoers 文件中。此事将被报告。
使用Linux,初学使用root不要太方便,工作中却不会给你这样的,必须要用自己的账号.新账号需要添加sudo的权限. su 使用root登陆 visudo 在root下添加自己的用户名 root A ...
- Entity Framework Model First下改变数据库脚本的生成方式
在Entity Framework Model First下, 一个非常常见的需求是改变数据库脚本的生成方式.这个应用场景是指,当用户在Designer上单击鼠标右键,然后选择Generate Dat ...
- jQuery-1.9.1源码分析系列(十五) 动画处理——缓动动画核心Tween
在jQuery内部函数Animation中调用到了createTweens()来创建缓动动画组,创建完成后的结果为: 可以看到上面的缓动动画组有四个原子动画组成.每一个原子动画的信息都包含在里面了. ...
- seajs的使用--主要了解模块化
一个使用sea.js的Demo sea.js可以解决命名问题,js文件间的依赖等. index.html内容如下: <!DOCTYPE html> <html xmlns=" ...