获取手机信息的工具类PhoneHelper

PhoneHelper

获取手机的一些基本信息,比如生产商家、固件版本、手机型号、手机号码、屏幕分辨率等

代码如下

import java.io.File;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Environment;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Display;
import android.view.Gravity;
import android.view.WindowManager;
import android.widget.Toast;

public class PhoneHelper {
    private  Context context=App.getInstance();
    private static PhoneHelper util;
    public static PhoneHelper getInstance() {
        if (util == null) {
            util = new PhoneHelper();
        }
        return util;

    }

    private PhoneHelper() {
        super();
    }

    /**
     * 生产商家
     *
     * @return
     */
    public String getManufacturer() {
        return android.os.Build.MANUFACTURER;
    }

    /**
     * 获得固件版本
     *
     * @return
     */
    public String getRelease() {
        return android.os.Build.VERSION.RELEASE;
    }

    /**
     * 获得手机型号
     *
     * @return
     */
    public String getModel() {
        return android.os.Build.MODEL;
    }

    /**
     * 获得手机品牌
     *
     * @return
     */
    public String getBrand() {
        return android.os.Build.BRAND;
    }

    /**
     * 获取手机运营商
     */
    public String getSimOperatorName() {
        TelephonyManager tm = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);

        return tm.getSimOperatorName();
    }

    /**
     * 得到本机手机号码,未安装SIM卡或者SIM卡中未写入手机号,都会获取不到
     * @return
     */
    public  String getThisPhoneNumber() {
        TelephonyManager tm = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        String number = tm.getLine1Number();

        return  number;
    }

    /**
     * 是否是电话号码
     *
     * @param phonenumber
     * @return
     */
    public boolean isPhoneNumber(String phonenumber) {
        Pattern pa = Pattern.compile("^[1][3,4,5,8,7][0-9]{9}$");
        Matcher ma = pa.matcher(phonenumber);
        return ma.matches();
    }

    /**
     * 打电话
     *
     * @param phone
     * @param context
     */
    public void doPhone(String phone) {
        Intent phoneIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"
                + phone));
        context.startActivity(phoneIntent);
    }

    /**
     * 发短信
     *
     * @param phone
     * @param content
     * @param c
     */
    public void doSMS(String phone, String content) {
        Uri uri = null;
        if (!TextUtils.isEmpty(phone))
            uri = Uri.parse("smsto:" + phone);
        Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
        intent.putExtra("sms_body", content);
        context.startActivity(intent);
    }

    /**
     * 得到屏幕信息
     * getScreenDisplayMetrics().heightPixels 屏幕高
     * getScreenDisplayMetrics().widthPixels 屏幕宽
     * @return
     */
    public DisplayMetrics getScreenDisplayMetrics() {
        WindowManager manager = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);

        DisplayMetrics displayMetrics = new DisplayMetrics();
        Display display = manager.getDefaultDisplay();
        display.getMetrics(displayMetrics);

        return displayMetrics;

    }

    /**
     * 屏幕分辨率
     *
     * @param drame
     * @return
     */
    public float getDip() {

        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
                context.getResources().getDisplayMetrics());
    }

    /**
     * 安装apk
     */
    public void instance(File file) {
        Intent intent = new Intent();
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setAction(android.content.Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(file),
                "application/vnd.android.package-archive");
        context.startActivity(intent);
    }

    /**
     * 是否安装了
     *
     * @param packageName
     * @return
     */
    public boolean isInstall(String packageName) {
        PackageManager packageManager = context.getPackageManager();
        List<ApplicationInfo> packs = packageManager
                .getInstalledApplications(PackageManager.GET_ACTIVITIES);
        for (ApplicationInfo info : packs) {
            if (info.packageName.equals(packageName))
                return true;
        }
        return false;
    }

    /**
     * 检测网络是否可用
     *
     * @return
     */
    public boolean isNetworkConnected() {
        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        return ni != null && ni.isConnected();
    }

    /**
     * 将Toast放在屏幕上方
     *
     * @param message
     */
    public void show(String message) {
        Toast toast = Toast.makeText(context, message, Toast.LENGTH_LONG);
        toast.setGravity(Gravity.TOP, 0,
                (getScreenDisplayMetrics().heightPixels / 5));
        toast.show();
    }

    /**
     * 调用浏览器打开
     *
     * @param activity
     * @param url
     */
    public void openWeb(String url) {
        Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

    }

    /**
     * 是否有外存卡
     *
     * @return
     */
    public boolean isExistExternalStore() {
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 得到sd卡路径
     *
     * @return
     */
    public String getExternalStorePath() {
        if (isExistExternalStore()) {
            return Environment.getExternalStorageDirectory().getAbsolutePath();
        }
        return null;
    }

    /**
     * 得到网络类型,0是未知或未连上网络,1为WIFI,2为2g,3为3g,4为4g
     * @return
     */
    public  int getNetType() {
        ConnectivityManager connectMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);

        int type = 0;
        NetworkInfo info = connectMgr.getActiveNetworkInfo();
        if (info == null||!info.isConnected()) {
            return type;
        }

        switch (info.getType()) {
        case ConnectivityManager.TYPE_WIFI:
            type = 1;
            break;
        case ConnectivityManager.TYPE_MOBILE:
            type = getNetworkClass(info.getSubtype());
            break;

        default:
            type=0;
            break;
        }

        return type;
    }

    /**
     * 判断数据连接的类型
     * @param networkType
     * @return
     */
    public int getNetworkClass(int networkType) {
        switch (networkType) {
        case TelephonyManager.NETWORK_TYPE_GPRS:
        case TelephonyManager.NETWORK_TYPE_EDGE:
        case TelephonyManager.NETWORK_TYPE_CDMA:
        case TelephonyManager.NETWORK_TYPE_1xRTT:
        case TelephonyManager.NETWORK_TYPE_IDEN:
        case TelephonyManager.NETWORK_TYPE_UNKNOWN:

            return 2;
        case TelephonyManager.NETWORK_TYPE_UMTS:
        case TelephonyManager.NETWORK_TYPE_EVDO_0:
        case TelephonyManager.NETWORK_TYPE_EVDO_A:
        case TelephonyManager.NETWORK_TYPE_HSDPA:
        case TelephonyManager.NETWORK_TYPE_HSUPA:
        case TelephonyManager.NETWORK_TYPE_HSPA:
        case TelephonyManager.NETWORK_TYPE_EVDO_B:
        case TelephonyManager.NETWORK_TYPE_EHRPD:
            return 3;
        case TelephonyManager.NETWORK_TYPE_LTE:
            return 4;
        default:
            return 0;
        }
    }
}
时间: 2024-11-06 20:06:08

获取手机信息的工具类PhoneHelper的相关文章

获取手机剩余空间工具类

1 import java.io.File; 2 3 import com.iss.utils.LogUtil; 4 5 import android.os.Environment; 6 import android.os.StatFs; 7 8 /** 9 * 类名 10 * @author 王洪贺<br/> 11 * 获取手机剩余的存储空间工具类 12 * 创建日期 2014年8月1日 13 */ 14 15 public class StorageUtil { 16 17 /** 18

android 获取手机信息工具类

package com.yqy.yqy_listviewheadview; import android.content.Context; import android.telephony.TelephonyManager; import android.util.Log; /** * 获取手机信息工具类<br> * 内部已经封装了打印功能,仅仅须要把DEBUG參数改为true就可以<br> * 假设须要更换tag能够直接更改,默觉得KEZHUANG * * @author YQY

获取SIM卡信息的工具类

本工具类可以获取手机的IMSI.本机的手机号码.SIM卡的服务商. 移动.联通可正常获取到SIM卡的手机卡号,但是电信的获取不到.... 首先,需要在AndroidManifest.xml清单配置文件中添加权限: <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 下面是工具类的代码 SIMCardInfo.java import android.content.Context; imp

利用线程创建发送手机验证码的工具类

1.生成验证码类 package com.util; import java.util.Timer; import java.util.TimerTask; /** * @description 手机发送验证码工具类 */ public class MessageCode extends TimerTask{ private Timer timer; /** * @description 短信验证码的内容 */ private String messageCode; /** * @descrip

获取数据库连接对象的工具类

mysql连接对象 jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/查找的文件jdbc.user=rootjdbc.password=自己设置的密码 oracle连接对象 jdbc.driver=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@localhost:1521:orcljdbc.user=scottjdbc.password=

【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)

为了实现一个功能,需要搜集手机信息,自己先在网上找了相关信息进行了汇总,主要是汇集手机的信息,一般想要的信息在手机设置->关于手机->状态消息里面包含了手机的各种信息,下面的代码中也主要显示了那些信息,但是源码的方法我还没有看,先把总结的贴出来.先上图(太多就截取几个).  上代码啦,太多了,就写主要代码了. // 获取Android手机中SD卡存储信息 获取剩余空间 public void getSDCardInfo() { // 在manifest.xml文件中要添加 /* * <u

iOS 整理笔记 获取手机信息(UIDevice、NSBundle、NSLocale)

/*    iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便开发者诊断问题,当然这些信息是用户的非隐私信息,是通过开发api可以获取到的.那么通过那些api可以获取这些信息呢,iOS的SDK中提供了UIDevice,NSBundle,NSLocale.    UIDevice        UIDevice提供了多种属性.类函数及状态通知,帮助我们全方位了解设备状况.从检测电池电量到定位设备与临近感应,UIDevice

android 获取手机信息

获取手机信息: 在文件 AndroidManifest.xml 中添加权限 <uses-permission android:name= "android.permission.READ_PHONE_STATE"/>等 String mBrand = android.os.Build.BRAND;// 手机品牌 String mType = android.os.Build.MODEL; // 手机型号   String mAndroid = android.os.Buil

安卓开发技巧四:手机分辨率处理工具类

/** * * @Description:手机分辨率处理工具类 * @author: * @see: * @since: * @copyright © * @Date:2014年8月13日 */ public class DensityUtil { /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.g