亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android獲得設備狀態信息、Mac地址、IP地址的方法

2019-10-21 21:32:08
字體:
來源:轉載
供稿:網友

前言

在APP開發時,經常會遇到要獲取手機狀態信息的場景,像升級時獲取版本號,像發生異常時要收集手機信息等等。有些軟件還要根據Mac地址來判定當前用戶以前是否登錄過。下面將一一介紹獲取這些手機狀態信息的方法。

1 通過build獲取手機硬件信息

  • 運用反射獲取Build信息,然后從build中得到對應字段的值。這種情況適用于獲取所有的build信息。
  • 或者直接調用Build類直接拿里面的字段名,如:android.os.Build.MODEL; // 手機型號 。這是為了獲取單獨某個手機信息的方法,直接調用Build的字段即可拿到對應信息,簡單快捷。
  • 別忘了加權限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

下面是Build類的字段所對應的信息

String BOARD    The name of the underlying board, like "goldfish".基板名String BOOTLOADER The system bootloader version number.String BRAND    The brand (e.g., carrier) the software is customized for, if any.品牌名String CPU_ABI   The name of the instruction set (CPU type + ABI convention) of native code.String CPU_ABI2  The name of the second instruction set (CPU type + ABI convention) of native code.String DEVICE   The name of the industrial design.品牌型號名,如小米4對應cancroString DISPLAY   A build ID string meant for displaying to the userString FINGERPRINT A string that uniquely identifies this build.包含制造商,設備名,系統版本等諸多信息String HARDWARE  The name of the hardware (from the kernel command line or /proc).String HOST   String ID     Either a changelist number, or a label like "M4-rc20".String MANUFACTURER  The manufacturer of the product/hardware.String MODEL    The end-user-visible name for the end product.String PRODUCT   The name of the overall product.String RADIO    The radio firmware version number.String SERIAL   A hardware serial number, if available.String TAGS    Comma-separated tags describing the build, like "unsigned,debug".long  TIME    當前時間,毫秒值String TYPE    The type of build, like "user" or "eng".String UNKNOWN   Value used for when a build property is unknown.String USER
//運用反射得到build類里的字段 Field[] fields = Build.class.getDeclaredFields();    //遍歷字段名數組    for (Field field : fields) {      try {        //將字段都設為public可獲取        field.setAccessible(true);        //filed.get(null)得到的即是設備信息        haspmap.put(field.getName(), field.get(null).toString());        Log.d("CrashHandler", field.getName() + " : " + field.get(null));      } catch (Exception e) {      }    }

下面是小米4對應的設備信息

D/CrashHandler: BOARD : MSM8974D/CrashHandler: BOOTLOADER : unknownD/CrashHandler: BRAND : XiaomiD/CrashHandler: CPU_ABI : armeabi-v7aD/CrashHandler: CPU_ABI2 : armeabiD/CrashHandler: DEVICE : cancroD/CrashHandler: DISPLAY : MMB29MD/CrashHandler: FINGERPRINT : Xiaomi/cancro_wc_lte/cancro:6.0.1/MMB29M/V8.1.3.0.MXDCNDI:user/release-keysD/CrashHandler: HARDWARE : qcomD/CrashHandler: HOST : c3-miui-ota-bd43D/CrashHandler: ID : MMB29MD/CrashHandler: IS_DEBUGGABLE : falseD/CrashHandler: MANUFACTURER : XiaomiD/CrashHandler: MODEL : MI 4LTED/CrashHandler: PRODUCT : cancro_wc_lteD/CrashHandler: RADIO : unknown//設備的序列號碼-SERIALD/CrashHandler: SERIAL : abcdefghD/CrashHandler: SUPPORTED_32_BIT_ABIS : [Ljava.lang.String;@76b6d2bD/CrashHandler: SUPPORTED_64_BIT_ABIS : [Ljava.lang.String;@e42c588D/CrashHandler: SUPPORTED_ABIS : [Ljava.lang.String;@9cdbb21D/CrashHandler: TAG : BuildD/CrashHandler: TAGS : release-keysD/CrashHandler: TIME : 1478606340000D/CrashHandler: TYPE : userD/CrashHandler: UNKNOWN : unknownD/CrashHandler: USER : builder

2.通過getSystemService()來獲取Ip地址

Context.getSystemService()這個方法是非常實用的方法,只須在參數里輸入一個String 字符串常量就可得到對應的服務管理方法,可以用來獲取絕大部分的系統信息,各個常量對應的含義如下。

WINDOW_SERVICE (“window”) 
The top-level window manager in which you can place custom windows. The returned object is a WindowManager.

LAYOUT_INFLATER_SERVICE (“layout_inflater”) 
A LayoutInflater for inflating layout resources in this context.

ACTIVITY_SERVICE (“activity”) 
A ActivityManager for interacting with the global activity state of the system.

POWER_SERVICE (“power”) 
A PowerManager for controlling power management.

ALARM_SERVICE (“alarm”) 
A AlarmManager for receiving intents at the time of your choosing.
NOTIFICATION_SERVICE (“notification”) 
A NotificationManager for informing the user of background events.

KEYGUARD_SERVICE (“keyguard”) 
A KeyguardManager for controlling keyguard.

LOCATION_SERVICE (“location”) 
A LocationManager for controlling location (e.g., GPS) updates.

SEARCH_SERVICE (“search”) 
A SearchManager for handling search.

VIBRATOR_SERVICE (“vibrator”) 
A Vibrator for interacting with the vibrator hardware.

CONNECTIVITY_SERVICE (“connection”) 
A ConnectivityManager for handling management of network connections.

WIFI_SERVICE (“wifi”) 
A WifiManager for management of Wi-Fi connectivity.

WIFI_P2P_SERVICE (“wifip2p”) 
A WifiP2pManager for management of Wi-Fi Direct connectivity.

INPUT_METHOD_SERVICE (“input_method”) 
An InputMethodManager for management of input methods.

UI_MODE_SERVICE (“uimode”) 
An UiModeManager for controlling UI modes.

DOWNLOAD_SERVICE (“download”) 
A DownloadManager for requesting HTTP downloads

BATTERY_SERVICE (“batterymanager”) 
A BatteryManager for managing battery state

JOB_SCHEDULER_SERVICE (“taskmanager”) 
A JobScheduler for managing scheduled tasks

NETWORK_STATS_SERVICE (“netstats”) 
A NetworkStatsManager for querying network usage statistics. 
Note: System services obtained via this API may be closely associated with the Context in which they are obtained from. In general, do not share the service objects between various different contexts (Activities, Applications, Services, Providers, etc.)

Parameters 
name 
The name of the desired service.

Returns 
The service or null if the name does not exist.

要獲取IP地址需要用到Context.CONNECTIVITY_SERVICE,這個常量所對應的網絡連接的管理方法。

代碼如下需要權限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
/**獲得IP地址,分為兩種情況,一是wifi下,二是移動網絡下,得到的ip地址是不一樣的*/  public static String getIPAddress() {    Context context=MyApp.getContext();    NetworkInfo info = ((ConnectivityManager) context        .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();    if (info != null && info.isConnected()) {      if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//當前使用2G/3G/4G網絡        try {          //Enumeration<NetworkInterface> en=NetworkInterface.getNetworkInterfaces();          for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {            NetworkInterface intf = en.nextElement();            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {              InetAddress inetAddress = enumIpAddr.nextElement();              if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {                return inetAddress.getHostAddress();              }            }          }        } catch (SocketException e) {          e.printStackTrace();        }      } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//當前使用無線網絡        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);        WifiInfo wifiInfo = wifiManager.getConnectionInfo();        //調用方法將int轉換為地址字符串        String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//得到IPV4地址        return ipAddress;      }    } else {      //當前無網絡連接,請在設置中打開網絡    }    return null;  }  /**   * 將得到的int類型的IP轉換為String類型   * @param ip   * @return   */  public static String intIP2StringIP(int ip) {    return (ip & 0xFF) + "." +        ((ip >> 8) & 0xFF) + "." +        ((ip >> 16) & 0xFF) + "." +        (ip >> 24 & 0xFF);  }

3.獲得Mac地址

我們知道mac地址是網卡的唯一標識,通過這個可以判斷網絡當前連接的手機設備有幾臺。代碼如下:

 public static String getMacAddress(){ /*獲取mac地址有一點需要注意的就是android 6.0版本后,以下注釋方法不再適用,不管任何手機都會返回"02:00:00:00:00:00"這個默認的mac地址,這是googel官方為了加強權限管理而禁用了getSYstemService(Context.WIFI_SERVICE)方法來獲得mac地址。*/ //    String macAddress= "";//    WifiManager wifiManager = (WifiManager) MyApp.getContext().getSystemService(Context.WIFI_SERVICE);//    WifiInfo wifiInfo = wifiManager.getConnectionInfo();//    macAddress = wifiInfo.getMacAddress();//    return macAddress;    String macAddress = null;    StringBuffer buf = new StringBuffer();    NetworkInterface networkInterface = null;    try {      networkInterface = NetworkInterface.getByName("eth1");      if (networkInterface == null) {        networkInterface = NetworkInterface.getByName("wlan0");      }      if (networkInterface == null) {        return "02:00:00:00:00:02";      }      byte[] addr = networkInterface.getHardwareAddress();      for (byte b : addr) {        buf.append(String.format("%02X:", b));      }      if (buf.length() > 0) {        buf.deleteCharAt(buf.length() - 1);      }      macAddress = buf.toString();    } catch (SocketException e) {      e.printStackTrace();      return "02:00:00:00:00:02";    }    return macAddress;  }

4.獲取手機號碼、IMEI碼

 /**獲取手機的IMEI號碼*/  public static String getPhoneIMEI() {    TelephonyManager mTm = (TelephonyManager) MyApp.getContext().getSystemService(Context.TELEPHONY_SERVICE);    String imei = mTm.getDeviceId();    String imsi = mTm.getSubscriberId();    String mtype = android.os.Build.MODEL; // 手機型號    String numer = mTm.getLine1Number(); // 手機號碼,有的可得,有的不可得    return imei;  }

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性色av一区二区三区| 午夜精品一区二区三区视频免费看| 欧美日韩亚洲激情| 国产日韩在线看片| 欧美激情va永久在线播放| 成人写真视频福利网| 久久久久久久久久av| 久久中文字幕一区| 国产一区二区三区在线观看视频| 26uuu另类亚洲欧美日本老年| 国产香蕉精品视频一区二区三区| 欧洲永久精品大片ww免费漫画| 日韩三级影视基地| 亚洲国产福利在线| 自拍亚洲一区欧美另类| 日韩精品极品毛片系列视频| 国产精品久久久久久久天堂| 9.1国产丝袜在线观看| 日韩在线资源网| 国产激情久久久久| 国产精品偷伦视频免费观看国产| 国产免费成人av| 亚洲老头老太hd| 亚洲天堂色网站| 国产精品一区二区在线| 色综合色综合久久综合频道88| 九九久久久久久久久激情| 中文字幕日本精品| 久久久亚洲网站| 国产精品吹潮在线观看| 久久精品最新地址| 国产精品18久久久久久麻辣| 亚洲欧美日韩国产中文| 国产欧美日韩综合精品| 国模吧一区二区三区| 国产啪精品视频网站| 日韩亚洲第一页| 国产精品直播网红| 中文字幕亚洲二区| 日本三级久久久| 国产精品久久久精品| 一本一本久久a久久精品牛牛影视| 欧美自拍视频在线| 美女精品久久久| 久久琪琪电影院| 国外成人性视频| www.欧美视频| 国产福利精品av综合导导航| 亚洲综合在线播放| 欧美黑人性生活视频| 日韩欧美高清在线视频| 欧美一区二区三区艳史| 国产视频精品va久久久久久| 亚洲理论片在线观看| 亚洲最大的免费| 欧美成人亚洲成人日韩成人| 精品国内自产拍在线观看| 韩国欧美亚洲国产| 久久国产天堂福利天堂| 国产成人一区三区| 色先锋久久影院av| 亚洲午夜精品久久久久久久久久久久| 91免费人成网站在线观看18| 国产91九色视频| 麻豆一区二区在线观看| 亚洲欧美日韩精品久久| 亚洲最新av在线| 日产日韩在线亚洲欧美| 亚洲欧美在线x视频| 欧美成人中文字幕| 亚洲美女在线视频| 这里只有精品视频在线| 欧美激情视频在线观看| 黄色一区二区在线观看| 欧美尤物巨大精品爽| 热门国产精品亚洲第一区在线| 亚洲一区二区久久久久久| 日韩美女在线观看一区| 成人免费视频在线观看超级碰| 九九热最新视频//这里只有精品| 91香蕉电影院| 久久久人成影片一区二区三区| 欧美亚洲第一区| 亚洲第一av网站| 在线成人一区二区| 国产精品专区h在线观看| 久久久亚洲影院你懂的| 亚洲色图第三页| 国产精品人人做人人爽| www.日韩免费| 91日本在线观看| 97人人爽人人喊人人模波多| 91久久久久久久| 日韩精品一区二区三区第95| 久久精品久久久久久国产 免费| 中文字幕欧美日韩| 亚洲国产欧美一区二区丝袜黑人| 亚洲a成v人在线观看| 午夜精品一区二区三区视频免费看| 久久久久久有精品国产| 亚洲自拍偷拍色片视频| 97香蕉久久夜色精品国产| 性色av一区二区三区红粉影视| 日韩电影免费在线观看中文字幕| 亚洲欧美日韩在线一区| 国产91色在线免费| 欧美野外wwwxxx| 中文日韩电影网站| 亚洲欧美精品suv| 亚洲在线免费视频| 精品国产91久久久| 亚洲激情自拍图| 日韩精品免费电影| 欧美另类在线播放| 日韩精品中文字幕在线观看| 亚洲美腿欧美激情另类| 日韩视频亚洲视频| 国产97在线视频| 欧美精品一区三区| 韩剧1988免费观看全集| 欧美成人在线免费| 日本欧美精品在线| 色一情一乱一区二区| 亚洲奶大毛多的老太婆| 狠狠综合久久av一区二区小说| 国产精品视频永久免费播放| 欧美—级a级欧美特级ar全黄| 成人午夜激情免费视频| 亚洲国产私拍精品国模在线观看| 欧美激情一区二区久久久| 综合欧美国产视频二区| 亚洲综合大片69999| 欧美大秀在线观看| 91在线视频一区| 91精品国产91久久久久久不卡| 第一福利永久视频精品| 亚洲国产一区二区三区在线观看| 亚洲激情在线观看视频免费| 欧美日韩国产在线看| 亚洲激情视频在线播放| 欧美激情成人在线视频| 亚洲第一国产精品| 久久久亚洲天堂| 亚洲国产精品久久久久久| 亚洲精品视频久久| 久久久久久久久久久久久久久久久久av| 日本韩国在线不卡| 成人性教育视频在线观看| 欧美成人精品一区| 欧美国产在线电影| 欧美国产日韩一区| 欧美大尺度激情区在线播放| 亚洲一区二区自拍| 亚洲性夜色噜噜噜7777| 欧美日韩美女在线观看| 亚洲区一区二区| 国产欧美精品一区二区三区-老狼| 欧美裸身视频免费观看| 久久夜色精品国产亚洲aⅴ| 欧美理论电影在线播放| 2021久久精品国产99国产精品| 久久综合免费视频影院| 精品久久久久久久大神国产| 国产精品日韩欧美大师|