Android通过Java反射获取系统属性值

本文介绍了一种使用Java反射机制调用android.os.SystemProperties类的方法,从而实现从Android应用中获取系统属性值的技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android.os.SystemProperties类可以用于获取系统的属性值, 然而这个类是内部使用的, 在应用程序中我们无法导入此类.

本文通过Java反射机制, 实现了调用这个类的方法, 从而获取系统属性值.

闲话休提, 书归正传.程序员最想看到的还是代码.下面就贴出了我写的一个方法.


public String get(String key) {
    Class<?> clazz;
    try {
        clazz = Class.forName("android.os.SystemProperties");
        Method method = clazz.getDeclaredMethod("get", String.class);
        return (String) method.invoke(clazz.newInstance(), key);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return "";
}

代码中, 首先获取android.os.SystemProperties这个类, 因为这个类的class文件已经被dalvik加载了, 所以可以找到这个类.

然后获取这个类中的get方法的实例method, 最后在clazz这个对象上调用method方法.

Method.invoke方法第一个参数是一个android.os.SystemProperties类的对象, 后面是变参,代表了get方法的参数.返回值是

Object类的对象, 需要根据实际情况进行恰当的转型.关于Java的反射机制, 请参考相关文档. 本文只表怎样获得系统属性值.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值