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 {

 @Override
 public 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.abp
   AppPhoneMgr.getInstance().startAppPkg(this, "com.wanputech.abp");
  } catch (Exception e) {
   showToast("错误:" + e.getMessage());
  }
 }

 /**
  * 卸载指定包名的应用
  */
 public void unInstallApk(View view) {
  try {
   //我另一个程序的包名com.example.column
   String 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();

 }

}

效果就不展示了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • android实用工具类分享(获取内存/检查网络/屏幕高度/手机分辨率)

    复制代码 代码如下: public class CommonUtil { public static boolean hasSDCard() { String status = Environment.getExternalStorageState();  return status.equals(Environment.MEDIA_MOUNTED); } /**  * 获取最大内存  *   * @return  */ public static long getMaxMemory() { r

  • Android手机管理工具类详解

    Android手机管理工具类 AppPhoneMgr分享给大家,供大家参考,具体内容如下 工具类内的方法: getInstance          : 单例对象 getSDKVersionNumber  : 获取手机系统版本号 getPhoneModel        : 获取手机型号 getPhoneWidth        : 获取手机宽度 getPhoneHeight       : 获取手机高度 getPhoneImei         : 获取手机imei串号 ,GSM手机的 IME

  • Android读写文件工具类详解

    本文实例为大家分享了Android读写文件工具类的具体代码,供大家参考,具体内容如下 public class Utils { private static String path1 = Environment.getExternalStorageDirectory().getAbsolutePath(); private static String path2 = Environment.getDownloadCacheDirectory().getAbsolutePath(); privat

  • Android圆角头像工具类详解

    很多android应用都用到了圆角头像,或者一些圆角图片处理起来比较麻烦,直接上圆角图片工具类 public class CircleImageView extends ImageView { // 缩放类型 private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP; private static final Bitmap.Config BITMAP_CONFIG = Bitmap.Config.ARGB_8888; pr

  • 封装flutter状态管理工具示例详解

    目录 引言 RxBinder 代码实现 Demo 完美运行 引言 关于 Flutter 状态管理,公司项目使用的是Bloc方案.Bloc 其实本质上是 provider 的封装扩展库,整体通过 InheritedWidget .Notifier 外加 Stream中转实现状态变更通知. 关于 Bloc 实现原理,有兴趣的同学可以观看这篇文章 Bloc原理解析 RxBinder 撇开Bloc内部实现策略,小轰尝试基于数据驱动模型,自定义一套状态管理工具.构思如下: 主要成员如下: RxBinder

  • linux 系统进程管理工具systemd详解(systemctl命令、创建自己的systemd服务)

    目录 linux systemd 什么是 systemd systemd 特点 unit(单元) systemd unit目录 Unit 和 Target Unit 文件结构 Linux命令——systemctl 参考 linux systemd 什么是 systemd Linux 系统在启动过程中,内核完成初始化以后,由内核第一个启动的程序便是 init 程序,路径为 /sbin/init(为一个软连接,链接到真实的 init 进程),其 PID 为1,它为系统里所有进程的“祖先”,Linux

  • Android相机管理工具类

    本文实例为大家分享了Android相机管理工具类的具体代码,供大家参考,具体内容如下 package com.utils.tools; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import com.shennongshi.dingdong.R; import com.shennongshi.dingdong.pztools.IntentConstant.R

  • 微信小程序 常用工具类详解及实例

    微信小程序 常用工具类详解 前言: 做微信小程序当中,会遇到好多的工具类util.js,这里记载下来以便平常使用 (Ps:建议通过目录查看) -获取日期(格式化) function formatTime(date) { var year = date.getFullYear() var month = date.getMonth() + 1 var day = date.getDate() var hour = date.getHours() var minute = date.getMinut

  • js时间戳转yyyy-MM-dd HH-mm-ss工具类详解

    在web开发中,我们经常需要用js将时间戳转yyyy-MM-dd HH-mm-ss类似的格式,这样才适合我们的观感,那么我们该如何在js中将时间戳转换成这种格式呢?其实很简单,我们开发一个时间戳工具类,如下: 第一种:最简单的是一个js时间格式的转换函数方法 function formatDateTime(inputTime) { var date = new Date(inputTime); var y = date.getFullYear(); var m = date.getMonth()

  • Java TimedCache 带时间缓存工具类详解使用

    简述 我们在工作中会碰到需要使用带过期时间的缓存场景.但是使用redis有太重了,毕竟缓存的数据很小,放在内存够够的.hutools提供了TimedCache时间缓存工具,可以实现该场景.下面使用到该组件,并为了适配工作场景,对该工具类做优化升级. Maven依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>

  • python 提取视频中的音频工具类详解

    前言 利用Python的ffmpy库提取视频中的音频.本文提供工具类代码. 环境依赖 需要安装ffmpy,安装指令: pip install ffmpy -i https://pypi.douban.com/simple 工具代码 不废话,上代码. #!/user/bin/env python # coding=utf-8 """ @project : csdn @author : huyi @file : extract_audio_from_audio.py @ide :

随机推荐