如何调用Android隐藏API

云漾AI创作平台实战:如何用GPT4.0+Midjourney快速生成商业级插画(附Prompt模板) 本文详细介绍了如何利用云漾AI创作平台结合GPT4.0和Midjourney快速生成商业级插画。通过智能文案生成与视觉化工作流,大幅提升创作效率,适用于电商、社交媒体等多种场景。文章包含实用Prompt模板和参数调整技巧,帮助设计师和内容创作者高效产出专业插画。 阅读详情

    作为Android应用的开发者,在Android平台上开发,最熟悉的莫过于Android SDK。SDK给开发者带来的巨大的便利,使得Android平台的应用开发效率大大提高。不过遗憾的是,Android的功能远不止SDK暴露的那么多,还有很多隐藏的东西Google都没有通过SDK暴露给用户开发者。查看Android源代码时就会发现,这些隐藏的API都有一个共同的特点:类或者方法前都有@hide。如图:



一、如何隐藏API的? 

 1)在正常情况下,即不加@hide的时候,所有的public 的类或者方法,在编译时都会编译生成到stub library的jar文件中。这个stub library其实是个空实现,但是它包含了所有的public方法。所以用这个stub library,应用开发者就可以在eclipse中进行开发了。

 2)但一旦加了@hide,那么在编译生成stub library时,凡是被@hide标记的类或者方法都被移除了。所以应用开发者就无法通过这个stub library“直接”调用被隐藏的类或者方法。如果强行在eclipse里调用隐藏的类或者方法,则eclipse会报错。典型的例子就是Android SDK中的android.jar,这个stub library所包含的就是已经被移除的的API。上图中,ActivityManager的forceStopPackage()方法在Android SDK中是无法找到的。

二、隐藏的API可以调用吗?

 1)那么应用开发者可以使用这些隐藏的API吗? 答案是肯定的。在真实的运行环境中,所有的API都是存在的并且是被实现的。那么很容易就会想到用“反射”。如果我们已经知道目标类的类名和方法名,以及参数列表,那么这样的方法即使被@hide了,我们依然可以通过反射来调用它。对于Java反射,这里我们不准备展开,不是很了解的同学请自行学习研究。下面是一个反射的例子。

 IActivitManager am = ActivityManagerNative.getDefault();

 Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class); forceStopPackage.setAccessible(true); 

 forceStopPackage.invoke(am, yourpkgname);  

 

2)反射虽好,不过写起来真麻烦,本来一个调用代码,一行就可以搞定,但是现在用发射写的话,需要好多行。有没有其他更加方便的办法呢,其实是有的。上面我们提到在Android SDK中的android.jar是一个阉割版,如果我们能生成一个完整版,这个问题就迎刃而解了。方法是现在整套Android源代码,然后做一次完整的编译。在out/target/common/obj/JAVA_LIBRARIES/目录下可以根据需要提取自己所要的stub library。以framework为例:将out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar复制到eclipse开发环境中,用user library的方式挂载,使其的优先级比android.jar要高即可。

以下是在eclipse中的设置步骤:



















 

三、需要注意的一些问题

1)无论是反射还是使用自编译的stub library,只能解决调用隐藏API的问题,而无法越过权限检查。

2)Google之所以将有些API隐藏,有些原因可能是因为这些API属于内部逻辑,不想对外暴露,也有可能是API接口还未最终确定下来。所以在低版本Android上的隐藏API不一定能在高版本的Android上使用。这点是一定要注意的。也就说隐藏API的兼容性比较差。因此利用反射调用隐藏API时,一定要注意根据Android的版本采用不同的方式去反射。

告别手动烧录!给STM32H750外挂Flash制作Keil专用下载算法(保姆级避坑指南) 本文详细介绍了为STM32H750外挂Flash开发Keil专用下载算法的全过程,从原理到实战操作,特别针对QSPI Flash的配置和优化提供了保姆级避坑指南。通过定制下载算法,开发者可以告别手动烧录,实现一键下载到外部Flash,大幅提升开发效率。 阅读详情

相关推荐

若依开源框架(分离版)在人大金仓数据库下使用

对于甲方业务特殊要求,使用国产化数据库人大金仓,作为项目主要存储。这里以若依开源框架整合人大金仓为例,演示如何在真实项目中引入人大金仓。

🐱喵测实验室 5944

Android 12 以太网开发,反射调用隐藏的api

【代码】Android 12 以太网开发,反射调用隐藏的api。

weixin_44917215的博客 2149

从CCS3.3到CCS10:工程迁移与开发环境升级全攻略

本文详细介绍了从CCS3.3迁移到CCS10的完整流程与实战指南。针对老旧DSP项目,阐述了升级的必要性,并逐步指导CCS10的安装配置、界面操作、核心的工程移植步骤,以及移植后常见的代码调整与问题解决方案,帮助开发者高效完成开发环境升级,充分利用新版本的工具链提升开发效率。

weixin_29304985的博客 379

免ROOT调用Android系统隐藏接口教程

通过以上软件的源码分析,我们可以知道,它们为了能够顺利调用系统api接口,在本地也创建了很多跟那些隐藏接口一样的文件跟对外接口函数,我们在分析Android Framework源码的时候,也发现了一个问题,里面那些接口,大部分都是@hide属性的,这部分我们是不可以调用的,但是adb shell环境下是可以使用的,这意味着,我们也仿照上述软件创建对应的文件跟编写对外接口函数名字,是否也可以达到同样效果?这里就简单先分析了两个命令的功能,其它的就不一一分析了,由于篇幅的问题,只能交给你们自己去分析了。

sorry_my_life的博客 3692

基于Ultralytic实现多路摄像头目标检测

基于Ultralytic实现多路摄像头目标检测前面的文章分享了单路摄像头画面的YOLO目标检测,这篇文章主要分享一下多路摄像头画面的实时YOLO目标检测。测试环境在Windows系统下进行。

qq_57674776的博客 942

保姆级教程:用CH34xSerCfg工具修改USB转串口芯片的VID/PID,避免驱动冲突

本文详细介绍了如何使用CH34xSerCfg工具修改USB转串口芯片的VID/PID,解决驱动冲突问题。通过实战案例和配置技巧,帮助开发者高效管理嵌入式设备,避免常见的USB设备识别问题,提升开发效率。

weixin_30924239的博客 225

Android App 如何 隐藏 HTTPS 请求,不让Charles 可以抓到数据,请求不可见?

我的问题是 如何在Charles 中不见请求,但是如果是用 1,2,3 这些其实都是可以在Charles 中看到请求的。只有像 IM这种是不用HTTP协议的才能看不见请求,但是现实是会挺多APP的请求,使用Charles 无法看到,不知道是什么原理。你可以通过配置代理服务器的方式来保护应用的通信安全。在应用中动态生成请求内容,比如通过加入随机参数、动态生成URL等方式,以防止抓包工具识别和拦截请求。在应用中使用加密算法对请求内容进行加密处理,使得即使抓包工具拦截到请求,也无法获取到明文内容。

GYBIN02的专栏 882

炼丹-Pyecharts: JupyterLab无法render_notebook

炼丹-Pyecharts: JupyterLab无法render_notebook问题描述Jupyter-Lab 环境下render_notebook显示空白 问题描述Jupyter-Lab 环境下render_notebook显示空白 首先需要使用pyecharts自带的config来申明一下使用pyecharts的运行环境 from pyecharts.globals import Curre...

MichaelZzzzz的博客 4689

android使用系统隐藏接口ActivityView实现主界面分窗显示三方应用Activity

android系统隐藏API介绍android.app.ActivityView frameworks\base\core\java\android\app /packages/apps/Car/Launcher/src/com/android/car/carlauncher/ https://source.android.google.cn/devices/automotive?hl=zh-cn

分享技术与经验的博客 1万+

K型热电偶负电压采集难题?3种运放电路设计方案对比(含Multisim仿真)

本文针对K型热电偶在低温测量中产生的负电压采集难题,详细对比了三种运放电路设计方案,包括双电源运放反相放大、单电源仪表放大器和差分放大电路,并结合Multisim仿真数据分析了各方案的性能差异。文章还提供了PCB布局和抗干扰设计的实战技巧,帮助工程师解决热电偶信号采集中的核心挑战。

postgres8guard的博客 1020

Windows部署OpenClaw报错不断?这篇环境配置指南帮你解决难题

想在Windows上部署OpenClaw却频频报错?🔧 本文详细梳理了OpenClaw部署必需环境的安装步骤和官方下载地址 📦,提供完整的验证清单和常见问题排查方法,帮你一次性搞定所有环境配置,顺利部署OpenClaw ✅

XiaoqiangClub的博客 6660

Android-反射调用隐藏API

android中有些时候我们在写代码时无法直接调用隐藏的API,这就需要用发射的方法来获得。下面通过一个java文件展示一个如何调用隐藏API的例子: package com.sonyericsson.tetheringdemo; import android.app.Activity; import android.net.wifi.WifiConfiguration; impo

yunwuhuxin的专栏 1841

AMD SDP 优快云 系列文章设计

摘要 本文档规划了7篇AMD SDP协议解析系列文章的技术博客设计方案。基于《Scalable Data Port (SDP) Specification》1.5.0版本(122页),面向SoC/NoC领域的RTL设计与验证工程师,构建从基础概念到验证实现的知识体系。 系列文章严格遵循协议规范边界,采用五类证据标签区分内容来源(规范原文、勘误、验证推导等),禁止补充未定义的实现细节。包含端口控制、事务传输、一致性协议等核心内容,最终落实到验证平台设计与覆盖率模型。 每篇文章采用统一模板:明确规范依据、问题导

元直的博客 169

Android开发-调用系统隐藏API

Android中有些Api被隐藏了,比如开关机,重启,如果要在应用中调用,要么用反射,要么就是直接在Android源代码下编译。如果用Eclipse用IDE,尽管调用隐藏API的代码能顺利在Android源码下通过编译,但Eclipse找不到相应的类,会报错,为了写代码时方便点,我们可以把相关的包加到eclipse中。 先下载Android源码,编译一次,找到out/target/com

mydots的专栏 1094

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

采用反射调用android隐藏的api

java里的反射如下: 一。写个类 public class Simple {  private void displayMessage(String strMsg) {   System.out.println("message is:" + strMsg);  } } 二。反射调用 import java.lang.reflect.*; public

1612

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android开发之调用系统隐藏API

Android中有些Api被隐藏了,比如开关机,重启,如果要在应用中调用,要么用反射,要么就是直接在Android源代码下编译。如果用Eclipse用IDE,尽管调用隐藏API的代码能顺利在Android源码下通过编译,但Eclipse找不到相应的类,会报错,为了写代码时方便点,我们可以把相关的包加到eclipse中。 先下载Android源码(本站有提供4.2.2的打包下载链接,自己找找),编

mrleeapple的专栏 2360

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android APK调用系统隐藏api

APK调用隐藏api 已调用SerialService为例 1,修改frameworks\base\core\java\android\hardware\SerialManager.java 添加如下代码: public static SerialManager getInstance(Context context){ mSerialManager = ...

liu362732346的博客 1623

android学习日记:利用反射调用隐藏API

最近用到了反射,最后虽然做到了,不过感觉网上相关的介绍都不是很清楚,就自己总结了下。 反射调用一个@hide的方法: 例如android.widget.AutoCompleteTextView包下面的setDropDownAlwaysVisible函数,这个函数在源码中是被hide掉的,调用的时候肯定要先获得一个AutoCompleteTextView的具体对象,所以这个对象也要在反射的时候被

wcnmcsnm的专栏 3131

Android开发:如何在Eclipse 中调用Android 源码里的隐藏API

Android SDK提供的Android.jar文件仅包含公开的调用API。一般来说,Android应用程序若要调用隐藏的API,那么应用程序必须放在源码中编译。 对习惯采用Eclipse进行开发的人来,在Eclipse编辑的代码,再拿到源码环境下编译应用程序比较麻烦。 用下面的方法可以直接在Eclipse里面调用和编译隐藏的API。 ...

weixin_33806509的博客 95

Android 三方APP调用系统隐藏API

将被调用的系统隐藏API,我们以WifiManager中的getVerboseLoggingLevel()为例,其没有权限检查,三方APP可以通过下面演示的三种方式直接调用。

scyangwei的专栏 2789

如何调用Android隐藏API - android_squad

本文转自51CTO技术社区,先说我现在还没有接触Android编程。 在Android平台上开发,最熟悉的莫过于Android SDK。SDK给开发者带来的巨大的便利,使得Android平台的应用开发效率大大提高。不过遗憾的是,Android的功能远不止SDK暴露的那么多,还有很多隐藏的东西Google都没有通过SDK暴露给用户开发者。查看Android源代码时就会发现,这些隐藏的AP...

weixin_30423977的博客 183

利用Java反射技术调用Android中被隐藏的API

1.概述 在方法说明中被标记“@hide”表示该方法是被隐藏的,不能经由SDK访问。之所以被隐藏,是想阻止开发者使用SDK中那些未完成或不稳定的部分(接口或架构)。如: /** * Returns true if the specified USB function is currently enabled when in device mode. *

C语言是最好的编程语言 3368
上一篇: Android曝重大漏洞,小分队已掌握其技术细节
下一篇: android root 分析
鲶鱼团队
博客等级 码龄14年 36粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值