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(); } }

效果就不展示了!

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

时间: 2024-11-05 22:04:04

Android手机管理工具类详解的相关文章

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

Lua包管理工具Luarocks详解

摘要: 1. 什么是Luarocks 2. 源码安装部署Luarocks 3. 注册Luarocks为Lua社区贡献自己的代码 4. Luarocks使用初探 讨论话题 什么是Luarocks 源码安装部署Luarocks 注册Luarocks为Lua社区贡献自己的代码 Luarocks使用初探 什么是Luarocks Luarocks是一个Lua包管理器,基于Lua语言开发,提供一个命令行的方式来管理Lua包依赖.安装第三方Lua包等,社区比较流行的包管理器之一,另还有一个LuaDist,Lu

Android APK优化工具Zipalign详解_Android

      Android SDK中包含了一个用于优化APK的新工具zipalign.它提高了优化后的Applications与Android系统的交互效率(俗话:"要致富先修路",Android小组重新为Applications与Android系统之间搭建了一条高速公路),从而可以使整个系统的运行速度有了较大的提升.Android小组强烈建议开发者在发布新Apps之前使用zipalign优化工具,而且对于已经发布但不受限于系统版本的Apps,建议用优化后的APK替换现有的版本.   

Android APK优化工具Zipalign详解

Android SDK中包含了一个用于优化APK的新工具zipalign.它提高了优化后的Applications与Android系统的交互效率(俗话:"要致富先修路",Android小组重新为Applications与Android系统之间搭建了一条高速公路),从而可以使整个系统的运行速度有了较大的提升.Android小组强烈建议开发者在发布新Apps之前使用zipalign优化工具,而且对于已经发布但不受限于系统版本的Apps,建议用优化后的APK替换现有的版本. 在下面的内容中将

Android 实现获取手机里面的所有图片详解及实例

Android 实现获取手机里面的所有图片详解及实例 实现代码: public class MainActivity extends Activity { //查看图片按钮 private Button look; private Button add; //显示图片名称的list ListView show_list; ArrayList names = null; ArrayList descs= null; ArrayList fileNames = null; @Override pro

Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还是会及时更新的,比如后续会出 分享SDK:sharesdk 后端SDK:Bmob 推送SDK:极光推送 短信SDK:验证码实现 等等-- 或者出一些装ubuntu系统或者黑苹果教程什么的,或者5.X之后的新玩法,主要还是困于时间方面缺少,或许这也是一种锻炼吧,工作了挺久的了,越发觉得自己的JAVA基

Android AIDL——进程通信机制详解_Android

Android  AIDL, Android进程机制通信机制,这里就整理下AIDL 的知识,帮助大家学习理解此部分知识! 什么是 AIDL AIDL 全称 Android Interface Definition Language,即 安卓接口描述语言.听起来很深奥,其实它的本质就是生成进程间通信接口的辅助工具.它的存在形式是一种 .aidl 文件,开发者需要做的就是在该文件中定义进程间通信的接口,编译的时候 IDE 就会根据我们的 .aidl 接口文件生成可供项目使用的 .java 文件,这和

Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送,写这个系列真的很要命,你要去把他们的API文档大致的翻阅一遍,而且各种功能都实现一遍,解决各种bug各种坑,不得不说,极光推送真坑,大家使用还是要慎重,我们看一下极光推送的官网 https://www.jpush.cn/common/ 推送比较使用,很多软件有需要,所以在这个点拿出来多讲讲,我们本节

Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSDK分享组件的,奈何需要去注册各平台的账号,还要审核,有些审核还挺久,就没办法,改为写这个Bmob了,相信大家对Bmob都是挺期待的吧,因为他作为Android后端的实现很好的支持,国内很多软件都在使用它,他的功能也是特别神奇,这里就不一一细说了,我们用实际的例子来见证他的神奇 官网:http://w