代码获取Android版本等信息

我手机的关于手机界面:

说明:

其中手机型号、Android版本、软件版本通过系统Build类得到,处理器信息、内核版本通过读取系统文件得到,基带版本信息通过反射得到。

源码:

package com.example.shen.phoneinfo;

import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Method;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Log.e("phoneInfo", "MODEL:" + android.os.Build.MODEL);
        Log.e("phoneInfo", "CPUInfo:"+getCPUInfo());
        Log.e("phoneInfo", "VERSION_RELEASE:"+android.os.Build.VERSION.RELEASE);
        Log.e("phoneInfo", "VERSION_SDK:"+android.os.Build.VERSION.SDK_INT + "");
        Log.e("phoneInfo", "BaseBandVersion:"+getBaseBandVersion());
        Log.e("phoneInfo", "KernelVersion:"+getKernelVersion());
        Log.e("phoneInfo", "ID:" + android.os.Build.ID);
    }

    /**
     * 获得处理器信息
     * @return String
     */
    public String getCPUInfo() {
        try {
            FileReader fileReader = new FileReader("/proc/cpuinfo");
            BufferedReader bufferedReader = new BufferedReader(fileReader);
            String info;
            while ((info = bufferedReader.readLine()) != null) {
                String[] array = info.split(":");
                if(array[0].trim().equals("Hardware")) {
                    return array[1];
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     *获得基带版本
     * @return String
     */
    public String getBaseBandVersion() {
        String version = "";
            try {
                Class clazz= Class.forName("android.os.SystemProperties");
                Object object = clazz.newInstance();
                Method method = clazz.getMethod("get", new Class[]{String.class, String.class});
                Object result = method.invoke(object, new Object[]{"gsm.version.baseband", "no message"});
                version = (String) result;
            } catch (Exception e) {
        }
        return version;
    }

    /**
     * 获得内核版本
     * @return String
     */
    public String getKernelVersion() {
        Process process = null;
        String kernelVersion = "";
        try {
            process = Runtime.getRuntime().exec("cat /proc/version");
        } catch (IOException e) {
            e.printStackTrace();
        }
        InputStream inputStream = process.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader, 8 * 1024);
        String result = "";
        String info;
        try {
            while ((info = bufferedReader.readLine()) != null) {
            result += info;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            if (result != "") {
                String keyword = "version ";
                int index = result.indexOf(keyword);
                info = result.substring(index + keyword.length());
                index = info.indexOf(" ");
                kernelVersion = info.substring(0, index);
            }
        } catch (IndexOutOfBoundsException e) {
            e.printStackTrace();
        }
        return kernelVersion;
    }
}

运行结果:

/proc/cpuinfo文件截图

/proc/version文件截图

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 22:36:51

代码获取Android版本等信息的相关文章

如何使用Java代码获取Android移动终端Mac地址

快下班了,现在总结一下如何使用Java代码获取Android移动终端Mac地址: 通过设备开通WiFi连接获取Mac地址是最可取的,代码如下: /** * 设备开通WiFi连接,通过wifiManager获取Mac地址 * * @author 高焕杰 */ public static String getMacFromWifi(Context context){ ConnectivityManager connectivityManager = (ConnectivityManager) con

获取Android版本信息和程序版本号

public class MainActivity extends ActionBarActivity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_m

代码获取Android的VersionCode和VersionName信息

VersionCode升级App版本时用,VersionName显示给用户. /** * get App versionCode * @param context * @return */ public String getVersionCode(Context context){ PackageManager packageManager=context.getPackageManager(); PackageInfo packageInfo; String versionCode="&quo

java通过解析文件获取apk版本等信息

import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.jdom.Document; import org.jdom.Ele

获取android所有联系人信息

转自http://blog.csdn.net/sky181772733/article/details/7221431 这个是代码 1 import android.app.Activity; 2 import android.database.Cursor; 3 import android.os.Bundle; 4 import android.provider.ContactsContract; 5 import android.provider.ContactsContract.Data

获取Android崩溃crash信息并写入日志发送邮件

一.实现Thread.UncaughtExceptionHandlerUnChecked异常发生时,由于没有相应的try…catch处理该异常对象,所以Java运行环境将会终止,程序将退出,也就是我们所说的Crash.Java API提供了一个全局异常捕获处理器,Android应用在Java层捕获Crash依赖的就是Thread.UncaughtExceptionHandler处理器接口,通常我们只需实现这个接口,并重写其中的uncaughtException方法,在该方法中可以读取Crash的

(转)获取android手机内部存储空间和外部存储空间的参数 && 如何决定一个apk的安装位置

转:http://blog.csdn.net/zhandoushi1982/article/details/8560233 获取android文件系统的信息,需要Environment类和StatFs类的支持. (1)Environment 是一个提供访问环境变量的类,常用的方法有: A,getRootDirectory() ,返回File,获取Android 的根目录. B,getDataDirectory() ,返回File ,获取Android 数据目录. C,getExternalSto

Android获取cpu和内存信息、网址的代码

android获取手机cpu并判断是单核还是多核 /** * Gets the number of cores available in this device, across all processors. * Requires: Ability to peruse the filesystem at "/sys/devices/system/cpu" * @return The number of cores, or 1 if failed to get result */ pri

android SDK manager 无法获取更新版本列表【转载】

http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息:  http://developer.android.com/sdk/installing/installing-adt.html 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ssl.google.com/android/eclipse/https://dl-ssl.