当前位置: 首页 > news >正文

Android多种方法获取系统属性

这里使用获取rga版本为例

1,使用sh脚本方法

sh的编写

echo $(getprop vendor.rga_api.version)

其中,vendor.rga_api.version是关键字

相关方法也有两种,一种是从sh脚本读取流,一种是指令很少的,直接读取字符串化为流。

代码如下:

 private void getRgaVersion(){Log.e(TAG, "onCreateView: 开始去获取rga");try {//todo 这种方法是需要写一个sh文件,从sh文件里面拿到对应的值  方法一  麻烦,而且需要单独写个文件,将方法二的内容放进去,然后放进设备对应的路径下面
//            ProcessBuilder processBuilder = new ProcessBuilder("sh", "sdcard/xxxx/rga.sh");//todo 这个方法是将sh文件里面的内容,直接在这使用指令形式执行 方法二ProcessBuilder processBuilder = new ProcessBuilder("sh", "-c","echo $(getprop vendor.rga_api.version)");Process process = processBuilder.start();process.waitFor();// 读取脚本结果输出BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));StringBuilder output = new StringBuilder();String line;while ((line = reader.readLine()) != null) {output.append(line).append("\n");}// 获取到rga的版本号String version = output.toString().trim();if ("1.9.1_[3]".equals(version)){rgaFlag=true;}Log.e(TAG, "onCreateView: 使用代码直接获取,不需要从sh文件那么麻烦,获取到的rga属性为="+version+";flag="+rgaFlag );} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}

2,使用反射获取 SystemProperties类

import java.lang.reflect.Method;public final class SystemPropertiesUtils {private static final String CLASS_NAME = "android.os.SystemProperties";public static String getProperty(String key, String defaultValue) {String value = defaultValue;try {Class<?> c = Class.forName(CLASS_NAME);Method get = c.getMethod("get", String.class, String.class);value = (String)(get.invoke(c, key, defaultValue));} catch (Exception e) {e.printStackTrace();} finally {return value;}}public static void setProperty(String key, String value) {try {Class<?> c = Class.forName(CLASS_NAME);Method set = c.getMethod("set", String.class, String.class);set.invoke(c, key, value);} catch (Exception e) {e.printStackTrace();}}
}

调用getProperty("vendor.rga_api.version", "default");

http://www.lryc.cn/news/167747.html

相关文章:

  • 密码学【一】
  • 企业如何选择舆情优化处置公司?
  • HBASE知识点
  • Python新手入门
  • vite + react + typescript + uni-app + node 开发一个生态系统
  • python pdf文件转图片
  • 牛客: BM7 链表中环的入口结点
  • SpringMVC系列(七)之自定义注解
  • MongoDB的搭建 和crud操作
  • 软件设计师考试学习1
  • 【云计算】虚拟私有云 VPC
  • @EventListener 监听事件 ,在同一个虚拟机中如何保证顺序执行
  • 数据结构入门 — 树的概念与结构
  • linux驱动开发day6--(epoll实现IO多路复用、信号驱动IO、设备树以及节点和属性解析相关API使用)
  • 9月15日作业
  • 关于Java多线程的那些事
  • 信息化项目验收的依据、内容和验收测评报告
  • 解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性
  • Python--文件和异常
  • IDEFICS 简介: 最先进视觉语言模型的开源复现
  • 玩转Mysql系列 - 第20篇:异常捕获及处理详解
  • 一些工具类
  • 20230916后台面经整理
  • 如何通过快解析测试接口内外网?本地内网ip让外网访问连接
  • 用c++实现五子棋小游戏
  • Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(二)
  • 通过finalshell快速在ubuntu上安装jdk1.8
  • 【Linux从入门到精通】多线程 | 线程互斥(互斥锁)
  • Echarts 散点图的详细配置过程
  • Nginx详解 五:反向代理