zoukankan      html  css  js  c++  java
  • 项目实战工具类(一):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、手机号判断

    工具类:

      1 import java.io.File;
      2 import java.util.ArrayList;
      3 import java.util.HashMap;
      4 import java.util.List;
      5 import java.util.Map;
      6 import java.util.regex.Matcher;
      7 import java.util.regex.Pattern;
      8 
      9 import android.content.Context;
     10 import android.content.Intent;
     11 import android.content.pm.ApplicationInfo;
     12 import android.content.pm.PackageInfo;
     13 import android.content.pm.PackageManager;
     14 import android.content.pm.PackageManager.NameNotFoundException;
     15 import android.content.pm.PermissionGroupInfo;
     16 import android.content.pm.PermissionInfo;
     17 import android.content.pm.ResolveInfo;
     18 import android.content.res.Configuration;
     19 import android.net.Uri;
     20 import android.os.Environment;
     21 import android.os.StatFs;
     22 import android.telephony.TelephonyManager;
     23 import android.util.TypedValue;
     24 import android.view.WindowManager;
     25 
     26 public class PhoneUtil {
     27     private static PhoneUtil phoneUtil;
     28 
     29     public static PhoneUtil getInstance() {
     30         if (phoneUtil == null) {
     31             synchronized (PhoneUtil.class) {
     32                 if (phoneUtil == null) {
     33                     phoneUtil = new PhoneUtil();
     34                 }
     35             }
     36         }
     37         return phoneUtil;
     38     }
     39 
     40     /**
     41      * 获取手机系统版本号
     42      * 
     43      * @return
     44      */
     45     public int getSDKVersionNumber() {
     46         int sdkVersion;
     47         try {
     48             sdkVersion = Integer.valueOf(android.os.Build.VERSION.SDK_INT);
     49         } catch (NumberFormatException e) {
     50             e.printStackTrace();
     51             sdkVersion = 0;
     52         }
     53         return sdkVersion;
     54     }
     55 
     56     /**
     57      * 获取手机型号
     58      */
     59     public String getPhoneModel() {
     60         return android.os.Build.MODEL;
     61     }
     62 
     63     /**
     64      * 获取手机宽度
     65      */
     66     @SuppressWarnings("deprecation")
     67     public int getPhoneWidth(Context context) {
     68         WindowManager wm = (WindowManager) context
     69                 .getSystemService(Context.WINDOW_SERVICE);
     70         return wm.getDefaultDisplay().getWidth();
     71     }
     72 
     73     /**
     74      * 获取手机高度
     75      * 
     76      * @param context
     77      */
     78     @SuppressWarnings("deprecation")
     79     public int getPhoneHeight(Context context) {
     80         WindowManager wm = (WindowManager) context
     81                 .getSystemService(Context.WINDOW_SERVICE);
     82         return wm.getDefaultDisplay().getHeight();
     83     }
     84 
     85     /**
     86      * 获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID.
     87      * 
     88      * @param context
     89      */
     90     public String getPhoneImei(Context context) {
     91         TelephonyManager tm = (TelephonyManager) context
     92                 .getSystemService(Context.TELEPHONY_SERVICE);
     93         if (tm == null)
     94             return null;
     95         return tm.getDeviceId();
     96     }
     97 
     98     /**
     99      * 获取手机sim卡号
    100      * 
    101      * @param context
    102      */
    103     public String getPhoneSim(Context context) {
    104         TelephonyManager tm = (TelephonyManager) context
    105                 .getSystemService(Context.TELEPHONY_SERVICE);
    106         if (tm == null)
    107             return null;
    108         return tm.getSubscriberId();
    109     }
    110 
    111     /**
    112      * 获取手机号
    113      * 
    114      * @param context
    115      */
    116     public String getPhoneNum(Context context) {
    117         TelephonyManager tm = (TelephonyManager) context
    118                 .getSystemService(Context.TELEPHONY_SERVICE);
    119         if (tm == null)
    120             return null;
    121         return tm.getLine1Number();
    122     }
    123 
    124     /**
    125      * 判断sd卡是否挂载
    126      */
    127     public boolean isSDCardMount() {
    128         if (android.os.Environment.getExternalStorageState().equals(
    129                 android.os.Environment.MEDIA_MOUNTED)) {
    130             return true;
    131         } else {
    132             return false;
    133         }
    134     }
    135 
    136     /**
    137      * 获取sd卡剩余空间的大小
    138      */
    139     @SuppressWarnings("deprecation")
    140     public long getSDFreeSize() {
    141         File path = Environment.getExternalStorageDirectory(); // 取得SD卡文件路径
    142         StatFs sf = new StatFs(path.getPath());
    143         long blockSize = sf.getBlockSize(); // 获取单个数据块的大小(Byte)
    144         long freeBlocks = sf.getAvailableBlocks();// 空闲的数据块的数量
    145         // 返回SD卡空闲大小
    146         return (freeBlocks * blockSize) / 1024 / 1024; // 单位MB
    147     }
    148 
    149     /**
    150      * 获取sd卡空间的总大小
    151      */
    152     @SuppressWarnings("deprecation")
    153     public long getSDAllSize() {
    154         File path = Environment.getExternalStorageDirectory(); // 取得SD卡文件路径
    155         StatFs sf = new StatFs(path.getPath());
    156         long blockSize = sf.getBlockSize(); // 获取单个数据块的大小(Byte)
    157         long allBlocks = sf.getBlockCount(); // 获取所有数据块数
    158         // 返回SD卡大小
    159         return (allBlocks * blockSize) / 1024 / 1024; // 单位MB
    160     }
    161 
    162     /**
    163      * 判断是否是平板
    164      */
    165     public boolean isTablet(Context context) {
    166         return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
    167     }
    168 
    169     /**
    170      * 判断一个apk是否安装
    171      * 
    172      * @param context
    173      * @param packageName
    174      */
    175     public boolean isApkInstalled(Context context, String packageName) {
    176         PackageManager pm = context.getPackageManager();
    177         try {
    178             pm.getPackageInfo(packageName, 0);
    179         } catch (PackageManager.NameNotFoundException e) {
    180             return false;
    181         }
    182         return true;
    183     }
    184 
    185     /**
    186      * 拨打电话
    187      * 
    188      * @param context
    189      * @param phoneNum
    190      */
    191     public void call(Context context, String phoneNum) throws Exception {
    192         if (phoneNum != null && !phoneNum.equals("")) {
    193             Uri uri = Uri.parse("tel:" + phoneNum);
    194             Intent intent = new Intent(Intent.ACTION_DIAL, uri);
    195             context.startActivity(intent);
    196         }
    197     }
    198 
    199     /**
    200      * 打开网页
    201      */
    202     public void openWeb(Context context, String url) {
    203         try {
    204             Uri uri = Uri.parse(url);
    205             context.startActivity(new Intent(Intent.ACTION_VIEW, uri));
    206         } catch (Exception e) {
    207             e.printStackTrace();
    208         }
    209     }
    210 
    211     /**
    212      * 获取应用权限 名称列表
    213      */
    214     public String[] getAppPermissions(Context context)
    215             throws NameNotFoundException {
    216         PackageManager pm = context.getPackageManager();
    217         PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(),
    218                 PackageManager.GET_PERMISSIONS);
    219         return getAppPermissions(packageInfo);
    220     }
    221 
    222     public String[] getAppPermissions(PackageInfo packageInfo)
    223             throws NameNotFoundException {
    224         return packageInfo.requestedPermissions;
    225     }
    226 
    227     /**
    228      * 获取手机内安装的应用
    229      */
    230     public List<PackageInfo> getInstalledApp(Context context) {
    231         PackageManager pm = context.getPackageManager();
    232         return pm.getInstalledPackages(0);
    233     }
    234 
    235     /**
    236      * 获取手机安装非系统应用
    237      */
    238     @SuppressWarnings("static-access")
    239     public List<PackageInfo> getUserInstalledApp(Context context) {
    240         List<PackageInfo> infos = getInstalledApp(context);
    241         List<PackageInfo> apps = new ArrayList<PackageInfo>();
    242         for (PackageInfo info : infos) {
    243             if ((info.applicationInfo.flags & info.applicationInfo.FLAG_SYSTEM) <= 0) {
    244                 apps.add(info);
    245             }
    246         }
    247         infos.clear();
    248         infos = null;
    249         return apps;
    250     }
    251 
    252     /**
    253      * 获取安装应用的信息
    254      */
    255     public Map<String, Object> getInstalledAppInfo(Context context,
    256             PackageInfo info) {
    257         Map<String, Object> appInfos = new HashMap<String, Object>();
    258         PackageManager pm = context.getPackageManager();
    259         ApplicationInfo aif = info.applicationInfo;
    260         appInfos.put("icon", pm.getApplicationIcon(aif));
    261         appInfos.put("lable", pm.getApplicationLabel(aif));
    262         appInfos.put("packageName", aif.packageName);
    263         return appInfos;
    264     }
    265 
    266     /**
    267      * 打开指定包名的应用
    268      */
    269     public void startAppPkg(Context context, String pkg) {
    270         Intent startIntent = context.getPackageManager()
    271                 .getLaunchIntentForPackage(pkg);
    272         startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    273         context.startActivity(startIntent);
    274     }
    275 
    276     /**
    277      * 卸载指定包名的应用
    278      */
    279     public void unInstallApk(Context context, String packageName) {
    280         Uri uri = Uri.parse("package:" + packageName);
    281         Intent intent = new Intent(Intent.ACTION_DELETE);
    282         intent.setData(uri);
    283         context.startActivity(intent);
    284     }
    285 
    286     /**
    287      * 手机号判断
    288      */
    289     public static boolean isMobileNO(String mobile) {
    290         Pattern p = Pattern
    291                 .compile("^((145|147)|(15[^4])|(17[0-9])|((13|18)[0-9]))\d{8}$");
    292         Matcher m = p.matcher(mobile);
    293         return m.matches();
    294     }
    295 
    296 }
  • 相关阅读:
    常用的网站cms内容管理系统推荐
    PageAdmin网站内容管理系统出现403错误的解决方法
    使用PageAdmin网站内容管理系统做网站的好处
    网站建设步骤及常用建站系统分享
    企业网站建设如何选择建站公司
    如何采用PageAdmin自助建站系统来进行企业网站建设
    站群系统-站群软件系统推荐
    js计算之递归
    算法之插入排序
    javaScript设计模式之常用工厂模式
  • 原文地址:https://www.cnblogs.com/xqxacm/p/5853850.html
Copyright © 2011-2022 走看看