热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android获取手机信息实例详解

这篇文章主要介绍了Android获取手机信息实例详解的相关资料,这里附有实例代码及实现效果图,需要的朋友可以参考下

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 

注意:添加权限





  
   

以下是效果视图:

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


推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
author-avatar
这个昵称能用嘛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有