Android手机管理工具类
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手机管理工具类相关推荐
- 安豆苗:轻量级Android手机管理工具
安豆苗是一款轻量级Android手机管理软件,该软件以方便易用为设计目标,同时兼顾一些基础管理功能.其最大的优势是无需数据线,只需利用电脑端的Web浏览器,即可实现手机端资料和应用程序管理功能.其中一 ...
- Android 手机震动工具类
参考链接:https://www.jianshu.com/p/7cf9972b4fc6 参考链接:https://blog.csdn.net/zhaoxiaojian1213/article/deta ...
- android 获取手机信息工具类
package com.yqy.yqy_listviewheadview;import android.content.Context; import android.telephony.Teleph ...
- android管理工具,AnyDroid(电脑安卓手机管理工具)V7.3.0.20200910 正式版
AnyDroid(电脑安卓手机管理工具)是一款很优秀好用的安卓手机管理的辅助工具.如果你需要一款好用的安卓手机管理工具,不妨试试小编带来的这款AnyDroid软件,功能强大全面,使用后可以帮助用户更轻 ...
- Android 手机自动化测试工具有哪几种?
Android 手机自动化测试工具有哪几种? 3 条评论 分享 按投票排序按时间排序 28 个回答 78赞同 反对,不会显示你的姓名 知乎用户,https://github.com/truebit 孙 ...
- Android开发常用工具类集合
转载自:https://blog.csdn.net/xiaoyi_tdcq/article/details/52902844 Android开发常用工具类集合 android开发中为了避免重复造轮子, ...
- android 快速开发工具类,android面试知识点
项目地址:570622566/FastAndrUtils 简介:android 快速开发工具类 更多:作者 提 Bug 官网 标签: Fastandrutils 是一套整理修改整合的 and ...
- Android常用的工具类
2019独角兽企业重金招聘Python工程师标准>>> 最新最准确内容建议直接访问原文:Android常用的工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于J ...
- android日程管理开发,基于Android日程管理工具的设计与开发.doc
PAGE PAGE i 基于android日程管理工具的设计与开发 摘 要 随着移动平台的崛起,越来越多的传统PC软件被移植到移动平台,比如ipad,iphone,Android等智能终端设备,在这些 ...
- 一个好用的日志管理工具类MyLogger
日志的规范管理,在项目中不容忽视,应用上线后将调试日志关闭也是十分必要的,下面就是一个好用的日志管理工具类(点击下载): import java.util.Hashtable;import andro ...
最新文章
- oracle preparedstatement,【JDBC】java PreparedStatement操作oracle数据库
- css3 画半圆和1/4圆
- 广度优先遍历算法-02合法的括号问题
- json文件转为excel_2分钟上手、3小时学会无代码软件开发---XML、Json处理
- Redhat GRUB配置错误修复
- oracle .ctl 是什么文件_Oracle误删dual表怎么办?这里教你怎么恢复
- java与java ee_Java EE 7社区调查结果!
- 陌陌怎么发起群活动 陌陌群组发起群活动教程
- Zabbix官方文件Zabbix图形树
- NYOJ题目48-小明的调查作业
- 计算机考研复试难,艰难与快乐:2008年重庆邮电大学计算机考研复试经历
- 富士施乐m115b怎么连接电脑_富士施乐m115b驱动|富士施乐DocuPrint M115b一体机驱动下载 V1.01.00 官方版 - 比克尔下载...
- 操作系统 ucore lab1实验报告
- 【程序设计训练】1-7 F1方程式冠军
- 用java简单画一条线
- 监听pda扫描_android系统PDA扫描枪,扫描完成后自带回车,为什么回车监听第一次不起作用,手动提交一次后才能正常提交...
- 如何白嫖最新版BurpSuite Pro
- 轻松实现即席查询,Smartbi满足用户多样分析需求
- 与iOS的初吻---方法命名与调用
- 对云计算的理解和看法
热门文章
- linux tac命令_Linux tac命令入门
- 【工具类】TimeLine功能的使用(一)
- JavaScript之深浅拷贝
- 【CF724F】Uniformly Branched Trees 动态规划
- chm之已取消到该网页的导航解决办法
- P5960 【模板】差分约束算法
- Win32基础学习笔记
- Eureka Client启动后就关闭 Unregistering application xxx with eureka with status DOWN
- 魔法门之英雄无敌3 android,魔法门之英雄无敌3 v0.86.04
- TexturePacker 图片加密