Android手机管理工具类 AppPhoneMgr

工具类内的方法:

getInstance          : 单例对象
getSDKVersionNumber  : 获取手机系统版本号
getPhoneModel        : 获取手机型号
getPhoneWidth        : 获取手机宽度
getPhoneHeight       : 获取手机高度
getPhoneImei         : 获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID
getPhoneSim          : 获取手机sim卡号
getPhoneNum          : 获取手机号
isSDCardMount        : 判断sd卡是否挂载
getSDFreeSize        : 获取sd卡剩余空间的大小
getSDAllSize         : 获取sd卡空间的总大小
isTablet             : 判断是否是平板
isApkInstalled       : 判断一个apk是否安装
getAppPermissions    : 获取应用权限 名称列表
getInstalledApp      : 获取手机内安装的应用
getUserInstalledApp  : 获取手机安装非系统应用
getInstalledAppInfo  : 获取安装应用的信息
startAppPkg          : 打开指定包名的应用
unInstallApk         : 卸载指定包名的应用
callPhone            : 直接呼叫指定的号码
toCallPhoneActivity  : 跳转至拨号界面
sendMessage          : 直接调用短信API发送信息(设置监听发送和接收状态)
toSendMessageActivity: 跳转至发送短信界面(自动设置接收方的号码)

AppPhoneMgr类的代码

 package com.example.phone;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.res.Configuration;
import android.net.Uri;
import android.os.Environment;
import android.os.StatFs;
import android.provider.Contacts;
import android.telephony.TelephonyManager;
import android.view.WindowManager;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;/*** 主要功能:手机管理工具类*/public class AppPhoneMgr {private static AppPhoneMgr phoneUtil;public static AppPhoneMgr getInstance() {if (phoneUtil == null) {synchronized (AppPhoneMgr.class) {if (phoneUtil == null) {phoneUtil = new AppPhoneMgr();}}}return phoneUtil;}/*** 获取手机系统版本号** @return*/public Integer getSDKVersionNumber() {Integer sdkVersion;try {sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK_INT);} catch (NumberFormatException e) {e.printStackTrace();sdkVersion = Integer.valueOf(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 (Environment.getExternalStorageState().equals(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 (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 toChooseContactsList(Context context) {Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(Contacts.People.CONTENT_URI);context.startActivity(intent);}/*** 发送短信界面  ,现在好像不行了*/public void toSendMessageActivity(Context context, String number) {try {Uri uri = Uri.parse("smsto:" + number);Intent intent = new Intent(Intent.ACTION_SENDTO, uri);context.startActivity(intent);} catch (Exception e) {e.printStackTrace();}}/*** 打开网页*/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();}
}

Activity的调用示例代码:

package com.example.phone;import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;import java.util.Arrays;
import java.util.List;
import java.util.Map;/*** 手机管理工具类的使用示例*/
public class MyActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}/*** 获取手机系统版本号** @return*/public void getSDKVersionNumber(View view) {Integer sdkVersionNumber = AppPhoneMgr.getInstance().getSDKVersionNumber();showToast(" \n 获取手机系统版本号:" + sdkVersionNumber);}/*** 获取手机型号*/public void getPhoneModel(View view) {String phoneModel = AppPhoneMgr.getInstance().getPhoneModel();showToast(" \n 获取手机型号:" + phoneModel);}/*** 获取手机宽度*/public void getPhoneWidth(View view) {int phoneWidth = AppPhoneMgr.getInstance().getPhoneWidth(this);showToast(" \n 获取手机宽度:" + phoneWidth);}/*** 获取手机高度*/public void getPhoneHeight(View view) {int phoneHeight = AppPhoneMgr.getInstance().getPhoneHeight(this);showToast(" \n 获取手机宽度:" + phoneHeight);}/*** 获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID.* 需要权限:android.permission.READ_PHONE_STATE.否则会报错*/public void getPhoneImei(View view) {String phoneImei = AppPhoneMgr.getInstance().getPhoneImei(this);showToast(" \n 获取手机imei串号:" + phoneImei);}/*** 获取手机sim卡号*/public void getPhoneSim(View view) {String phoneSim = AppPhoneMgr.getInstance().getPhoneSim(this);showToast(" \n 获取手机sim卡号:" + phoneSim);}/*** 获取手机号,不行??*/public void getPhoneNum(View view) {String phoneSim = AppPhoneMgr.getInstance().getPhoneNum(this);showToast(" \n 获取手机号:" + phoneSim);}/*** 判断sd卡是否挂载*/public void isSDCardMount(View view) {boolean isSDCardMount = AppPhoneMgr.getInstance().isSDCardMount();showToast(" \n 判断sd卡挂载:" + isSDCardMount);}/*** 获取sd卡剩余空间的大小*/public void getSDFreeSize(View view) {long getSDFreeSize = AppPhoneMgr.getInstance().getSDFreeSize();showToast(" \n 获取sd卡剩余空间的大小:" + getSDFreeSize);}/*** 获取sd卡空间的总大小*/public void getSDAllSize(View view) {long getSDAllSize = AppPhoneMgr.getInstance().getSDAllSize();showToast(" \n 获取sd卡剩余空间的大小:" + getSDAllSize);}/*** 判断是否是平板*/public void isTablet(View view) {boolean isTablet = AppPhoneMgr.getInstance().isTablet(this);showToast(" \n 判断是否是平板:" + isTablet);}/*** 判断一个apk是否安装*/public void isApkInstalled(View view) {boolean isApkInstalled = AppPhoneMgr.getInstance().isApkInstalled(this, "com.wanputech.abp");showToast(" \n  判断一个apk是否安装:" + isApkInstalled);}/*** 拨打电话*/public void call(View view) {String phone = "13812345678";try {AppPhoneMgr.getInstance().call(this, phone);} catch (Exception e) {showToast(" \n 拨打电话失败:" + e.getMessage());}showToast(" \n 拨打电话:" + phone);}/*** 跳转到联系人界面*/public void toChooseContactsList(View view) {AppPhoneMgr.getInstance().toChooseContactsList(this);}/*** 发送短信界面*/public void toSendMessageActivity(View view) {AppPhoneMgr.getInstance().toSendMessageActivity(this, "12315");}/*** 打开网页*/public void openWeb(View view) {String url = "https://www.baidu.com/";   //百度AppPhoneMgr.getInstance().openWeb(this, url);}/*** 获取应用权限 名称列表*/public void getAppPermissions(View view) {try {String[] getAppPermissions = AppPhoneMgr.getInstance().getAppPermissions(this);showToast(" \n  获取应用权限 名称列表:" + getAppPermissions);} catch (Exception e) {showToast(" \n  获取应用权限 名称列表:" + e.getMessage());}}/*** 程序请求了的权限*/public void getAppPermissions2(View view) {try {String[] getAppPermissions = AppPhoneMgr.getInstance().getAppPermissions(getPackageManager().getPackageInfo("com.example.phone", 1));showToast(" \n  程序请求了的权限:" + Arrays.asList(getAppPermissions));} catch (Exception e) {showToast(" \n  程序请求了的权限:" + e.getMessage());}}/*** 获取手机内安装的应用*/public void getInstalledApp(View view) {List<PackageInfo> installedApp = AppPhoneMgr.getInstance().getInstalledApp(this);for (int i = 0; i < installedApp.size(); i++) {showToast(" \n  获取手机内安装的应用:" + installedApp.get(i));}}/*** 获取手机安装非系统应用*/public void getUserInstalledApp(View view) {List<PackageInfo> installedApp = AppPhoneMgr.getInstance().getUserInstalledApp(this);for (int i = 0; i < installedApp.size(); i++) {showToast(" \n  获取手机安装非系统应用:" + installedApp.get(i));}}/*** 获取安装应用的信息*/public void getInstalledAppInfo(View view) {try {Map<String, Object> installedAppInfo = AppPhoneMgr.getInstance().getInstalledAppInfo(this, getPackageManager().getPackageInfo("com.example.phone", 1));for (int i = 0; i < installedAppInfo.size(); i++) {showToast(" \n  获取安装应用的信息:" + installedAppInfo.get(i));}} catch (PackageManager.NameNotFoundException e) {showToast(" \n  获取安装应用的信息:" + e.getMessage());}}/*** 打开指定包名的应用*/public void startAppPkg(View view) {try {//我另一个程序的包名com.wanputech.abpAppPhoneMgr.getInstance().startAppPkg(this, "com.wanputech.abp");} catch (Exception e) {showToast("错误:" + e.getMessage());}}/*** 卸载指定包名的应用*/public void unInstallApk(View view) {try {//我另一个程序的包名com.example.columnString packageName = "com.example.column";AppPhoneMgr.getInstance().unInstallApk(this, packageName);} catch (Exception e) {showToast("错误:" + e.getMessage());}}/*** 手机号判断*/public void isMobileNO(View view) {//String phoneNum = "12345678978";boolean mobileNO = AppPhoneMgr.isMobileNO(phoneNum);showToast(" \n  手机号判断:" + phoneNum + "--" + mobileNO);}Toast toast;public void showToast(String msg) {if (toast == null) {toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);} else {toast.setText(msg);}toast.show();}}

效果就不展示了!

共勉:天天向上。

Android手机管理工具类相关推荐

  1. 安豆苗:轻量级Android手机管理工具

    安豆苗是一款轻量级Android手机管理软件,该软件以方便易用为设计目标,同时兼顾一些基础管理功能.其最大的优势是无需数据线,只需利用电脑端的Web浏览器,即可实现手机端资料和应用程序管理功能.其中一 ...

  2. Android 手机震动工具类

    参考链接:https://www.jianshu.com/p/7cf9972b4fc6 参考链接:https://blog.csdn.net/zhaoxiaojian1213/article/deta ...

  3. android 获取手机信息工具类

    package com.yqy.yqy_listviewheadview;import android.content.Context; import android.telephony.Teleph ...

  4. android管理工具,AnyDroid(电脑安卓手机管理工具)V7.3.0.20200910 正式版

    AnyDroid(电脑安卓手机管理工具)是一款很优秀好用的安卓手机管理的辅助工具.如果你需要一款好用的安卓手机管理工具,不妨试试小编带来的这款AnyDroid软件,功能强大全面,使用后可以帮助用户更轻 ...

  5. Android 手机自动化测试工具有哪几种?

    Android 手机自动化测试工具有哪几种? 3 条评论 分享 按投票排序按时间排序 28 个回答 78赞同 反对,不会显示你的姓名 知乎用户,https://github.com/truebit 孙 ...

  6. Android开发常用工具类集合

    转载自:https://blog.csdn.net/xiaoyi_tdcq/article/details/52902844 Android开发常用工具类集合 android开发中为了避免重复造轮子, ...

  7. android 快速开发工具类,android面试知识点

    项目地址:570622566/FastAndrUtils  简介:android 快速开发工具类 更多:作者   提 Bug   官网 标签: Fastandrutils 是一套整理修改整合的 and ...

  8. Android常用的工具类

    2019独角兽企业重金招聘Python工程师标准>>> 最新最准确内容建议直接访问原文:Android常用的工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于J ...

  9. android日程管理开发,基于Android日程管理工具的设计与开发.doc

    PAGE PAGE i 基于android日程管理工具的设计与开发 摘 要 随着移动平台的崛起,越来越多的传统PC软件被移植到移动平台,比如ipad,iphone,Android等智能终端设备,在这些 ...

  10. 一个好用的日志管理工具类MyLogger

    日志的规范管理,在项目中不容忽视,应用上线后将调试日志关闭也是十分必要的,下面就是一个好用的日志管理工具类(点击下载): import java.util.Hashtable;import andro ...

最新文章

  1. oracle preparedstatement,【JDBC】java PreparedStatement操作oracle数据库
  2. css3 画半圆和1/4圆
  3. 广度优先遍历算法-02合法的括号问题
  4. json文件转为excel_2分钟上手、3小时学会无代码软件开发---XML、Json处理
  5. Redhat GRUB配置错误修复
  6. oracle .ctl 是什么文件_Oracle误删dual表怎么办?这里教你怎么恢复
  7. java与java ee_Java EE 7社区调查结果!
  8. 陌陌怎么发起群活动 陌陌群组发起群活动教程
  9. Zabbix官方文件Zabbix图形树
  10. NYOJ题目48-小明的调查作业
  11. 计算机考研复试难,艰难与快乐:2008年重庆邮电大学计算机考研复试经历
  12. 富士施乐m115b怎么连接电脑_富士施乐m115b驱动|富士施乐DocuPrint M115b一体机驱动下载 V1.01.00 官方版 - 比克尔下载...
  13. 操作系统 ucore lab1实验报告
  14. 【程序设计训练】1-7 F1方程式冠军
  15. 用java简单画一条线
  16. 监听pda扫描_android系统PDA扫描枪,扫描完成后自带回车,为什么回车监听第一次不起作用,手动提交一次后才能正常提交...
  17. 如何白嫖最新版BurpSuite Pro
  18. 轻松实现即席查询,Smartbi满足用户多样分析需求
  19. 与iOS的初吻---方法命名与调用
  20. 对云计算的理解和看法

热门文章

  1. linux tac命令_Linux tac命令入门
  2. 【工具类】TimeLine功能的使用(一)
  3. JavaScript之深浅拷贝
  4. 【CF724F】Uniformly Branched Trees 动态规划
  5. chm之已取消到该网页的导航解决办法
  6. P5960 【模板】差分约束算法
  7. Win32基础学习笔记
  8. Eureka Client启动后就关闭 Unregistering application xxx with eureka with status DOWN
  9. 魔法门之英雄无敌3 android,魔法门之英雄无敌3 v0.86.04
  10. TexturePacker 图片加密