Android 获取手机信息实例详解

作者:lqh 时间:2021-08-21 00:22:34 

Android 获取手机信息

应用信息:包名、版本号、版本名,手机是否有Root权限

手机信息:手机屏幕宽和高、当前可用内存大小、总内存大小、IMEI号、IESI号、手机型号、手机品牌、手机MacAdd、CPU型号、CPU频率

开门见山,以下是Java代码,XML只有一个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();// 获取手机可用内存大小
   getTotalMemory();//获取总内存大小
   getHeightAndWidth();//获取屏幕宽高
   getInfo();//获取IMEI号,IESI号,手机型号  
   getMacAddress();//获取IMEI号,IESI号,手机型号  
   getCpuInfo();//手机CPU信息
   getPackage();//获取软件包名,版本名,版本号
   isRoot();//手机是否root
   String text = getHeightAndWidth() +
       "\n" + getTotalMemory() +
       "\n" + getAvailMemory() +  
       "\n" + getInfo() +  
       "\n" + getMacAddress() +  
       "\n" + getCpuInfo() +
       "\n" + getPackage() +
       "\n" + isRoot();
   mPhoneInfo.setText(text);

}

/**
  * 获取软件包名,版本名,版本号
  */
 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;
 }

/**
  * 获取手机是否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当前可用内存大小  
  */  
 private String getAvailMemory() {// 获取android当前可用内存大小        
   File path = Environment.getDataDirectory();  
   StatFs stat = new StatFs(path.getPath());  
   long blockSize = stat.getBlockSize();  
   long availableBlocks = stat.getAvailableBlocks();  
   return "当前可用内存:" + Formatter.formatFileSize(MainActivity.this, blockSize * availableBlocks);
   }  

/**
  * 获得系统总内存
  */  
 private String getTotalMemory() {  
   String str1 = "/proc/meminfo";// 系统内存信息文件  
   String str2;  
   String[] arrayOfString;  
   long initial_memory = 0;    
   try {  
   FileReader localFileReader = new FileReader(str1);  
   BufferedReader localBufferedReader = new BufferedReader(  
   localFileReader, 8192);  
   str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小  

arrayOfString = str2.split("\\s+");  
   initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte  
   localBufferedReader.close();    
   } catch (IOException e) {  
   }  
   return "总内存大小:" + Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte转换为KB或者MB,内存大小规格化  
 }  

/**
  * 获得手机屏幕宽高
  * @return
  */  
 public String getHeightAndWidth(){  
   int width=getWindowManager().getDefaultDisplay().getWidth();  
   int heigth=getWindowManager().getDefaultDisplay().getHeight();  
   String str = "Width:" + width+"\nHeight:"+heigth+"";  
   return str;  
   }  
 /**
  * 获取IMEI号,IESI号,手机型号
  */  
 private String getInfo() {  
    TelephonyManager mTm = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);  
     String imei = mTm.getDeviceId();  
     String imsi = mTm.getSubscriberId();  
     String mtype = android.os.Build.MODEL; // 手机型号  
     String mtyb= android.os.Build.BRAND;//手机品牌  
     String numer = mTm.getLine1Number(); // 手机号码,有的可得,有的不可得  
   return "手机IMEI号:"+imei+"\n手机IESI号:"+imsi+"\n手机型号:"+mtype+"\n手机品牌:"+mtyb+"\n手机号码"+numer;  
   }  
 /**
  * 获取手机MAC地址
  * 只有手机开启wifi才能获取到mac地址
  */  
 private String getMacAddress(){  
     String result = "";  
     WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);  
     WifiInfo wifiInfo = wifiManager.getConnectionInfo();  
     result = wifiInfo.getMacAddress();  
     return "手机macAdd:" + 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) {  
     }  
     return "CPU型号:" + 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;
 }

}

注意:添加权限



<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
 <uses-permission android:name="android.permission.READ_PHONE_STATE" />

以下是效果视图:

Android 获取手机信息实例详解

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://blog.csdn.net/u012721519/article/details/51001041

标签:Android,手机信息
0
投稿

猜你喜欢

  • Android 判断是否连接成功了指定wifi

    2021-10-21 04:59:10
  • Kotlin 接口与 Java8 新特性接口详解

    2023-09-10 01:10:45
  • Java中的访问修饰符详细解析

    2022-01-18 17:23:02
  • spring缓存cache的使用详解

    2023-03-28 11:36:14
  • Java基于TCP协议的Socket通信

    2023-08-11 10:10:12
  • 让应用程序只运行一个实例的实现方法

    2023-03-19 22:20:52
  • 简单了解JAVA public class与class区别

    2023-11-15 23:59:26
  • Java基础之数组模拟循环队列

    2022-08-29 12:58:06
  • 浅谈mybatis中的#和$的区别 以及防止sql注入的方法

    2023-03-24 10:22:28
  • C#实现动态创建接口并调用的实例

    2021-11-12 16:38:17
  • Android对话框使用方法详解

    2023-11-09 03:37:51
  • 详解C# 利用反射根据类名创建类的实例对象

    2023-12-20 12:42:41
  • Java RabbitMQ高级特性详细分析

    2021-12-26 00:31:36
  • C# 通过ServiceStack 操作Redis

    2023-12-13 06:18:01
  • javaweb Servlet开发总结(一)

    2023-04-08 22:52:32
  • C#解决汉诺塔问题DEMO

    2023-03-25 19:11:25
  • SpringBoot整合RedisTemplate实现缓存信息监控的步骤

    2023-10-14 10:17:13
  • java内存泄漏与内存溢出关系解析

    2023-08-07 01:58:59
  • Android RecycleView添加head配置封装的实例

    2021-09-14 00:05:58
  • 解决IDEA springboot"spring-boot-maven-plugin"报红问题

    2023-08-15 21:29:19
  • asp之家 软件编程 m.aspxhome.com