美文网首页Android系统开发程序员
通过Java反射机制使用系统隐藏API

通过Java反射机制使用系统隐藏API

作者: J_Coder | 来源:发表于2016-05-20 12:10 被阅读645次

对于基于系统平台开发应用的开发者来说,在一些应用场景下常常需要我们获取系统隐藏API来处理问题,下面我们以获取系统的属性为例子展开详细地说明。

首先明确哪类属于系统隐藏api呢?

如系统属性类 SystemProperties.java
代码位于frameworks/base/core/java/android/os/SystemProperties.java


package android.os;
import java.util.ArrayList;
import android.util.Log;

/**
 * Gives access to the system properties store.  The system properties
 * store contains a list of string key-value pairs.
 *
 * {@hide}
 */
public class SystemProperties
{
  //略
    /** 
     * Get the value for the given key.
     * @return if the key isn't found, return def if it isn't null, or an empty string otherwise
     * @throws IllegalArgumentException if the key exceeds 32 characters
     */
    public static String get(String key, String def) {
        if (key.length() > PROP_NAME_MAX) {
            throw new IllegalArgumentException("key.length > " + PROP_NAME_MAX);
        }   
        return native_get(key, def);
    }
     //略
}

注意上面的 {@hide}这个anotation的声明,只要标注了这个anotation的类或者方法,在标准的sdk中是无法直接引用的。

如何使用Java反射机制引用

什么是Java的反射机制,这个相信大家都是有所了解的,下面直接上代码

public static String systemPropertiesGet(String prop, String defVal) {
        try {
            //通过详细地类名获取到指定的类
            Class<?> psirClass = Class.forName("android.os.SystemProperties");
            //通过方法名,传入参数获取指定方法
            java.lang.reflect.Method method = psirClass.getMethod("get", String.class, String.class);
            String ret = (String) method.invoke(psirClass.newInstance(), prop, defVal);
            return ret;
        } catch (Exception e) {
        }
        return defVal;
    }

通过以上的方法就可以获取到系统隐藏的api来帮助我们处理问题了,这里相当于引用了SystemProperties.get(String key, String def)方法。

相关文章

  • 通过Java反射机制使用系统隐藏API

    对于基于系统平台开发应用的开发者来说,在一些应用场景下常常需要我们获取系统隐藏API来处理问题,下面我们以获取系统...

  • Java笔记之——反射

    这篇文章来谈谈Java基础——反射的内容。主要通过以下几点进行介绍:反射机制、反射的使用及有关反射的API。 一、...

  • Java反射实践

    一、概述 Java的反射机制是Java语言动态性的一种体现。反射机制是通过反射API来实现的,它允许程序在运行过程...

  • Java反射机制详解(一)

    接下来我们将介绍Java反射机制的一系列的知识。本篇文章主要针对Java反射机制的介绍以及反射API的使用知识。 ...

  • Java 反射机制(二)

    前言 在上篇 Java 反射机制(一) 介绍了一些 Java 反射相关的常用 API ,在知道了如何去使用反射之后...

  • Java反射机制

    Java反射机制 前言 网页版的jdk的API离线版API 什么是反射机制 反射是java语言的一个特性,它允程序...

  • android.os.ServiceManager导入报错

    android系统在对外发布时,会使用@hide隐藏一部分api,在做apk开发时,我们可以通过反射去调用这些已经...

  • Java 反射

    Java反射Java反射API获取Class对象通过反射创建实例对象,调用公共方法通过反射调用私有方法 一.Jav...

  • Java反射机制及API使用

    原文地址 反射简单来说,就是动态加载对象,并对对象进行剖析。在Java中的反射机制是指在运行状态中,对于任意一个类...

  • [JAVA学习笔记] 反射机制

    [JAVA学习笔记] 反射机制 Java的反射通过Class类和java.lang.reflect类库实现。通过它...

网友评论

    本文标题:通过Java反射机制使用系统隐藏API

    本文链接:https://www.haomeiwen.com/subject/whknrttx.html