IMEI號,IESI號,手機型號:
- private void getInfo() {
- TelephonyManager mTm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
- String imei = mTm.getDeviceId();
- String imsi = mTm.getSubscriberId();
- String mtype = android.os.Build.MODEL; // 手機型號
- String numer = mTm.getLine1Number(); // 手機號碼,有的可得,有的不可得
- }
手機型號 Build.MODEL
String | MODEL | The end-user-visible name for the end product. |
sdk版本 Build.VERSION.SDK
String | SDK | This constant is deprecated. Use SDK_INT to easily get this as an integer. |
及frimware版本號(系統版本號) Build.VERSION.RELEASE
String | RELEASE | The user-visible version string. |
事實上,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. |
String | DISPLAY | A build ID string meant for displaying to the user |
String | 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 |
明確幾個概念:
SIM卡存儲的數據可分爲四類:
第一類是固定存放的數據。這類數據在移動電話機被出售之前由SIM卡中心寫入,包括國際移動用戶識別號(IMSI)、鑑權密鑰(KI)、鑑權和加密算法等等。
第二類是暫時存放的有關網絡的數據。如位置區域識別碼(LAI)、移動用戶暫時識別碼(TMSI)、禁止接入的公共電話網代碼等。
第三類是相關的業務代碼,如個人識別碼(PIN)、解鎖碼(PUK)、計費費率等。
第四類是電話號碼簿,是手機用戶隨時輸入的電話號碼。用戶全部資料幾乎都存儲在SIM卡內,因此SIM卡又稱爲用戶資料識別卡。
IMSI是一個唯一的數字, 標識了GSM和UMTS 網絡裏的唯一一個用戶. 它存儲 在手機的SIM卡里,它會通過手機發送到網絡上. IMSI 與 SIM唯一對應
IMEI也是一串唯一的數字, 標識了 GSM 和 UMTS網絡裏的唯一一個手機.它通常被打印在手機裏電池下面的那一面,撥 *#06# 也能看到它. IMEI 與 設備唯一對應.
1。IMEI不存在於SIM卡中,它是手機本身的串號。
2。通常我們所說的手機號也不存在於SIM卡中,雖然SIM卡中有一個專門存儲SIM卡本身號碼的地方,但是此號碼是通過手工設定的,而且是可以更改的。 SIM卡的識別通常使用IMSI號,這個對於SIM卡是唯一的。
3。使用SimGetRecordInfo之類的函數獲得SIM卡的IMSI號碼能否成功依賴於設備製造商是否實現了此函數,據我所知在DOPOD的機器上是可以獲得,但是在聯想的機器上卻不行,其他機器沒有。
4。獲得IMEI以及IMSI可以通過RIL或者TAPI中的LINE操作的函數獲得。
記得添加權限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
獲取手機屏幕高度:
- private void getWeithAndHeight(){
- //這種方式在service中無法使用,
- DisplayMetrics dm = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- String width = dm.widthPixels; //寬
- String height = dm.heightPixels; //高
- //在service中也能得到高和寬
- WindowManager mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
- width = mWindowManager.getDefaultDisplay().getWidth();
- height = mWindowManager.getDefaultDisplay().getHeight();
- }
獲取手機MAC地址:
- private String getMacAddress(){
- String result = "";
- WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
- WifiInfo wifiInfo = wifiManager.getConnectionInfo();
- result = wifiInfo.getMacAddress();
- Log.i(TAG, "macAdd:" + result);
- return result;
- }
手機CPU信息
- private String[] getCpuInfo() {
- String str1 = "/proc/cpuinfo";
- String str2 = "";
- String[] cpuInfo = {"", ""}; //1-cpu型號 //2-cpu頻率
- String[] arrayOfString;
- try {
- FileReader fr = new FileReader(str1);
- BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
- str2 = localBufferedReader.readLine();
- arrayOfString = str2.split("\\s+");
- for (int i = 2; i < arrayOfString.length; i++) {
- cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";
- }
- str2 = localBufferedReader.readLine();
- arrayOfString = str2.split("\\s+");
- cpuInfo[1] += arrayOfString[2];
- localBufferedReader.close();
- } catch (IOException e) {
- }
- Log.i(TAG, "cpuinfo:" + cpuInfo[0] + " " + cpuInfo[1]);
- return cpuInfo;
- }
獲取手機可用內存和總內存:
- private String[] getTotalMemory() {
- String[] result = {"",""}; //1-total 2-avail
- ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo();
- mActivityManager.getMemoryInfo(mi);
- long mTotalMem = 0;
- long mAvailMem = mi.availMem;
- String str1 = "/proc/meminfo";
- String str2;
- String[] arrayOfString;
- try {
- FileReader localFileReader = new FileReader(str1);
- BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);
- str2 = localBufferedReader.readLine();
- arrayOfString = str2.split("\\s+");
- mTotalMem = Integer.valueOf(arrayOfString[1]).intValue() * 1024;
- localBufferedReader.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- result[0] = Formatter.formatFileSize(this, mTotalMem);
- result[1] = Formatter.formatFileSize(this, mAvailMem);
- Log.i(TAG, "meminfo total:" + result[0] + " used:" + result[1]);
- return result;
- }
獲取手機安裝的應用信息(排除系統自帶):
- private String getAllApp() {
- String result = "";
- List<PackageInfo> packages = getPackageManager().getInstalledPackages(0);
- for (PackageInfo i : packages) {
- if ((i.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
- result += i.applicationInfo.loadLabel(getPackageManager()).toString() + ",";
- }
- }
- return result.substring(0, result.length() - 1);
- }