Android进阶学习-查看系统信息(系统照妖镜)

2023-11-05 12:50

本文主要是介绍Android进阶学习-查看系统信息(系统照妖镜),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实例图片:

现在好多系统防护软件都自带一个查看系统信息的功能,一堆繁琐的信息究竟是怎么获得的呢?

其实,Android系统提供了两种方法来给我们获取系统信息:

①android.os.Build    //包含了 系统编译时的大量设备 配置信息

②SystemProperty //包含了许多系统配置属性值和参数

 

那么问题来了,怎么用?对于android.os.Build来说,系统信息以常量的形式存在,所以我们可以直接获取,下面是 常用常量的解析:

Build.BOARD // 主板
Build.BRAND // android系统定制商
Build.CPU_ABI // cpu指令集
Build.DEVICE // 设备参数
Build.DISPLAY // 显示屏参数
Build.FINGERPRINT // 硬件名称
Build.HOST
Build.ID // 修订版本列表
Build.MANUFACTURER // 硬件制造商
Build.MODEL // 版本
Build.PRODUCT // 手机制造商
Build.TAGS // 描述build的标签
Build.TIME
Build.TYPE // builder类型
Build.USER

接下来就是SystemProperty的用法啦,也很简单,通过键值对来获取:

System.getProperty("java.version");

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/result"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" /><Spinnerandroid:id="@+id/spinner1"android:layout_width="match_parent"android:layout_height="wrap_content" /><Spinnerandroid:id="@+id/spinner2"android:layout_width="match_parent"android:layout_height="wrap_content" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><Buttonandroid:id="@+id/btn1"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="SystemProperty" /></LinearLayout></LinearLayout>

Activity代码:

package com.example.customview;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;public class SystemActivity extends Activity implements OnItemSelectedListener, OnClickListener {Spinner					spinner1;Spinner					spinner2;TextView				result;String[]				mDatas1	= new String[] { android.os.Build.BOARD, android.os.Build.BOOTLOADER,android.os.Build.BRAND, android.os.Build.CPU_ABI, android.os.Build.CPU_ABI2, android.os.Build.DEVICE,android.os.Build.DISPLAY, android.os.Build.FINGERPRINT, android.os.Build.HARDWARE, android.os.Build.HOST,android.os.Build.ID, android.os.Build.MANUFACTURER, android.os.Build.MODEL, android.os.Build.PRODUCT,android.os.Build.RADIO, android.os.Build.SERIAL, android.os.Build.TAGS, android.os.Build.TYPE,android.os.Build.USER, };String[]				mDatas2	= new String[] { "java.version", "java.vendor", "java.vendor.url", "java.home","java.vm.specification.version", "java.vm.specification.vendor", "java.vm.specification.name","java.vm.version", "java.vm.vendor", "java.vm.name", "java.specification.version","java.specification.vendor", "java.specification.name", "java.class.version", "java.class.path","java.library.path", "java.io.tmpdir", "java.compiler", "java.ext.dirs", "os.name", "os.arch", "os.version","file.separator", "path.separator", "line.separator", "user.name", "user.home", "user.dir", };ArrayAdapter<String>	mAdapter1;ArrayAdapter<String>	mAdapter2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_system);spinner1 = (Spinner) findViewById(R.id.spinner1);spinner2 = (Spinner) findViewById(R.id.spinner2);result = (TextView) findViewById(R.id.result);findViewById(R.id.btn1).setOnClickListener(this);mAdapter1 = new ArrayAdapter<String>(SystemActivity.this, android.R.layout.simple_dropdown_item_1line, mDatas1);mAdapter2 = new ArrayAdapter<String>(SystemActivity.this, android.R.layout.simple_dropdown_item_1line, mDatas2);spinner1.setAdapter(mAdapter1);spinner2.setAdapter(mAdapter2);spinner1.setOnItemSelectedListener(this);spinner2.setOnItemSelectedListener(this);}@Overridepublic void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {if (arg0.getId() == R.id.spinner2) {result.setText(System.getProperty(mDatas2[arg2]));} else if (arg0.getId() == R.id.spinner2) {}}@Overridepublic void onNothingSelected(AdapterView<?> arg0) {}@Overridepublic void onClick(View v) {if (v.getId() == R.id.btn1) {result.setText("");for (int i = 0; i < mDatas2.length; i++) {result.setText(result.getText().toString() + "\n" + mDatas2[i] + ":" + System.getProperty(mDatas2[i]));}}}}

 

转载于:https://my.oschina.net/august1996/blog/681939

这篇关于Android进阶学习-查看系统信息(系统照妖镜)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349993

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.