如何调用Android隐藏API

 我来答
好程序员
2016-06-18 · HTML5前端培训/大数据培训/Java
好程序员
好程序员是IT高端课程培训基地,从平凡到卓越,为梦想而拼搏。
向TA提问
展开全部

    在windows7操作系统Eclipse开发软件中按照如下步骤调用Android隐藏API。

1、首先把classes.jar文件拷贝到Android工程中的lib目录下

2、接着在Eclipse中把classes.jar文件加入到build
path中,如下图:

3、最后在Eclipse中的Project->Properties的"java build path"->"Order and Export"中调整classes.jar的顺序,让它为位于Android
SDK之前,如下图:

育知同创教育
2016-04-15 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
对于这个问题,一般可以用Java Reflect技术来解决。(一)访问隐藏public类 例如PolicyManager就是个隐藏类,如果非要在App层访问它,那么就可以使用reflect技术: try { Class policyClass = Class.forName("com.android.internal.policy.PolicyManager"); } catch (Exception e) { e.printStackTrace();
}(二)访问隐藏类的static方法 因为没有隐藏类的对象实例,所以只能用null去访问它的static方法或成员: try { Method makenewwindow = policyClass.getMethod("makeNewWindow", new Class[] {Context.class});
Window win = (Window)makenewwindows.invoke(null, context); } catch (Exception e) {
e.printStackTrace();
}(三)访问public类的私有成员变量 try { Field f = WebSettings.class.getDeclaredField("mBuiltInZoomControls");
f.setAccessible(true); //关闭访问检查 f.setBoolean(wSettings, false); //wSettings是WebSettings对象
} catch(Exception e) {
Log.i(LOGTAG, e.toString());
} (四)访问public类的私有成员变量 try { Method m = WebSettings.class.getDeclaredMethod("getCurrentUserAgent");
m.setAccessible(true); //关闭访问检查 m.invoke(wSettings); //wSettings是WebSettings对象
} catch(Exception e) {
Log.i(LOGTAG, e.toString());
} (五)访问public类的@hide的public成员 try { Object[] args = {Integer.valueOf(5)}; Method m = WebSettings.class.getMethod("setPageCacheCapacity", new Class[]{int.class});
m.invoke(wSettings, args); //wSettings是WebSettings对象
} catch(Exception e) {
Log.i(LOGTAG, e.toString());} try {Method m = WebView.class.getMethod("getWebChromeClient");
Object ob = m.invoke(mSubView); WebChromeClient client = (WebChromeClient) ob;
} 利用反射技术的优点是灵活,能解决一些访问限制的问题,能够在不兼容的系统捕获异常,而使程序不至于崩溃;缺点是步骤比较多,需要熟悉要调用的类、方法名称访问属性,大量使用反射会大大增加代码,对代码的健壮性不利。一般被hide的类或成员可能还不太成熟稳定,所以不便公开。 另外一种解决以上访问问题的方法是导入全编译的classes.jar包,这种方法比较简单。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式