獲取Android手機信息的工具類PhoneHelper

yne7 9年前發布 | 2K 次閱讀 Java Android

獲取手機的一些基本信息,比如生產商家、固件版本、手機型號、手機號碼、屏幕分辨率等

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

}</pre>

 本文由用戶 yne7 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!