Android 獲取手機(jī)信息實(shí)例詳解
Android 獲取手機(jī)信息
應(yīng)用信息:包名、版本號(hào)、版本名,手機(jī)是否有Root權(quán)限
手機(jī)信息:手機(jī)屏幕寬和高、當(dāng)前可用內(nèi)存大小、總內(nèi)存大小、IMEI號(hào)、IESI號(hào)、手機(jī)型號(hào)、手機(jī)品牌、手機(jī)MacAdd、CPU型號(hào)、CPU頻率
開門見山,以下是Java代碼,XML只有一個(gè)TextView顯示信息。
package com.example.getphoneinfo;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.telephony.TelephonyManager;
import android.text.format.Formatter;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView mPhoneInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initData() {
// TODO Auto-generated method stub
getAvailMemory();// 獲取手機(jī)可用內(nèi)存大小
getTotalMemory();//獲取總內(nèi)存大小
getHeightAndWidth();//獲取屏幕寬高
getInfo();//獲取IMEI號(hào),IESI號(hào),手機(jī)型號(hào)
getMacAddress();//獲取IMEI號(hào),IESI號(hào),手機(jī)型號(hào)
getCpuInfo();//手機(jī)CPU信息
getPackage();//獲取軟件包名,版本名,版本號(hào)
isRoot();//手機(jī)是否root
String text = getHeightAndWidth() +
"\n" + getTotalMemory() +
"\n" + getAvailMemory() +
"\n" + getInfo() +
"\n" + getMacAddress() +
"\n" + getCpuInfo() +
"\n" + getPackage() +
"\n" + isRoot();
mPhoneInfo.setText(text);
}
/**
* 獲取軟件包名,版本名,版本號(hào)
*/
private String getPackage(){
try {
String pkName = this.getPackageName();
String versionName = this.getPackageManager().getPackageInfo(
pkName, 0).versionName;
int versionCode = this.getPackageManager()
.getPackageInfo(pkName, 0).versionCode;
return "Package:" + pkName + "\nversionName:" + versionName + "\nversionCode:" + versionCode;
} catch (Exception e) {
}
return null;
}
/**
* 獲取手機(jī)是否root信息
* @return
*/
private String isRoot(){
String bool = "Root:false";
try{
if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())){
bool = "Root:false";
} else {
bool = "Root:true";
}
} catch (Exception e) {
}
return bool;
}
/**
* 獲取android當(dāng)前可用內(nèi)存大小
*/
private String getAvailMemory() {// 獲取android當(dāng)前可用內(nèi)存大小
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return "當(dāng)前可用內(nèi)存:" + Formatter.formatFileSize(MainActivity.this, blockSize * availableBlocks);
}
/**
* 獲得系統(tǒng)總內(nèi)存
*/
private String getTotalMemory() {
String str1 = "/proc/meminfo";// 系統(tǒng)內(nèi)存信息文件
String str2;
String[] arrayOfString;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
str2 = localBufferedReader.readLine();// 讀取meminfo第一行,系統(tǒng)總內(nèi)存大小
arrayOfString = str2.split("\\s+");
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 獲得系統(tǒng)總內(nèi)存,單位是KB,乘以1024轉(zhuǎn)換為Byte
localBufferedReader.close();
} catch (IOException e) {
}
return "總內(nèi)存大?。? + Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte轉(zhuǎn)換為KB或者M(jìn)B,內(nèi)存大小規(guī)格化
}
/**
* 獲得手機(jī)屏幕寬高
* @return
*/
public String getHeightAndWidth(){
int width=getWindowManager().getDefaultDisplay().getWidth();
int heigth=getWindowManager().getDefaultDisplay().getHeight();
String str = "Width:" + width+"\nHeight:"+heigth+"";
return str;
}
/**
* 獲取IMEI號(hào),IESI號(hào),手機(jī)型號(hào)
*/
private String getInfo() {
TelephonyManager mTm = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
String imei = mTm.getDeviceId();
String imsi = mTm.getSubscriberId();
String mtype = android.os.Build.MODEL; // 手機(jī)型號(hào)
String mtyb= android.os.Build.BRAND;//手機(jī)品牌
String numer = mTm.getLine1Number(); // 手機(jī)號(hào)碼,有的可得,有的不可得
return "手機(jī)IMEI號(hào):"+imei+"\n手機(jī)IESI號(hào):"+imsi+"\n手機(jī)型號(hào):"+mtype+"\n手機(jī)品牌:"+mtyb+"\n手機(jī)號(hào)碼"+numer;
}
/**
* 獲取手機(jī)MAC地址
* 只有手機(jī)開啟wifi才能獲取到mac地址
*/
private String getMacAddress(){
String result = "";
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
result = wifiInfo.getMacAddress();
return "手機(jī)macAdd:" + result;
}
/**
* 手機(jī)CPU信息
*/
private String getCpuInfo() {
String str1 = "/proc/cpuinfo";
String str2 = "";
String[] cpuInfo = {"", ""}; //1-cpu型號(hào) //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) {
}
return "CPU型號(hào):" + cpuInfo[0] + "\nCPU頻率:" + cpuInfo[1];
}
public void initView() {
// TODO Auto-generated method stub
mPhoneInfo = (TextView)findViewById(R.id.id_tv_phone_info);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
注意:添加權(quán)限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
以下是效果視圖:

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Android 檢查更新、下載、安裝功能的實(shí)現(xiàn)
- Android 解決TextView排版參差不齊的問題
- Android SpannableString設(shè)置超鏈接、顏色、字體等屬性
- Android調(diào)試出現(xiàn)The selected device is incompatible問題解決
- android非RxJava環(huán)境下使用Handler實(shí)現(xiàn)預(yù)加載
- android高仿小米時(shí)鐘(使用Camera和Matrix實(shí)現(xiàn)3D效果)
- Android BadgeView紅點(diǎn)更新信息提示示例代碼
- Android中獲取資源 id 及資源 id 的動(dòng)態(tài)獲取
- Android仿微信activity滑動(dòng)關(guān)閉效果
- Android 實(shí)現(xiàn)局部圖片滑動(dòng)指引效果
相關(guān)文章
Android ProgressBar直線進(jìn)度條的實(shí)例代碼
本文通過實(shí)例代碼給大家介紹了android progressbar直線進(jìn)度條的實(shí)現(xiàn)方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-06-06
Android Studio 配置:自定義頭部代碼注釋及添加模版方式
這篇文章主要介紹了Android Studio 配置:自定義頭部代碼注釋及添加模版方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android 頁(yè)面多狀態(tài)布局管理的開發(fā)
頁(yè)面多狀態(tài)布局是開發(fā)中常見的需求,即頁(yè)面在不同狀態(tài)需要顯示不同的布局,這篇文章主要介紹了Android 頁(yè)面多狀態(tài)布局管理的開發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
Android 添加系統(tǒng)設(shè)置屬性的實(shí)現(xiàn)及步驟
這篇文章主要介紹了Android 添加系統(tǒng)設(shè)置屬性的實(shí)現(xiàn)及步驟的相關(guān)資料,需要的朋友可以參考下2017-07-07
Android自定義View實(shí)現(xiàn)拖拽效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)拖拽效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Android Loader詳細(xì)介紹及實(shí)例代碼
這篇文章主要介紹了Android Loader詳細(xì)介紹及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-12-12
Android編程使用WebView實(shí)現(xiàn)文件下載功能的兩種方法
這篇文章主要介紹了Android編程使用WebView實(shí)現(xiàn)文件下載功能的兩種方法,涉及Android基于WebView的相關(guān)文件傳輸與線程操作技巧,需要的朋友可以參考下2018-02-02
Android應(yīng)用開發(fā)中WebView的常用方法筆記整理
WebView即是在安卓本地應(yīng)用中打開網(wǎng)頁(yè)視圖功能,其中對(duì)于JavaScript加載的各項(xiàng)操作是重點(diǎn)和難點(diǎn),本文就為大家送上Android應(yīng)用開發(fā)中WebView的常用方法筆記整理2016-05-05

