- 浏览: 1510904 次
- 性别:
- 来自: 南京
-
文章分类
- 全部博客 (419)
- XMPP (19)
- Android (180)
- Java (59)
- Network (4)
- HTML5 (13)
- Eclipse (9)
- SCM (23)
- C/C++ (4)
- UML (4)
- Libjingle (15)
- Tools&Softwares (29)
- Linphone (5)
- Linux&UNIX (6)
- Windows (18)
- Google (10)
- MISC (3)
- SIP (6)
- SQLite (5)
- Security (4)
- Opensource (29)
- Online (2)
- 文章 (3)
- MemoryLeak (10)
- Decompile (5)
- Ruby (1)
- Image (1)
- Bat (4)
- TTS&ASR (28)
- Multimedia (1)
- iOS (20)
- Asciiflow - ASCII Flow Diagram Tool.htm (1)
- Networking (1)
- DLNA&UPnP (2)
- Chrome (2)
- CI (1)
- SmartHome (0)
- CloudComputing (1)
- NodeJS (3)
- MachineLearning (2)
最新评论
-
bzhao:
点赞123!
Windows的adb shell中使用vi不乱码方法及AdbPutty -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket 技术介绍 -
obehavior:
view.setOnTouchListenerview是什么
[转]android 一直在最前面的浮动窗口效果 -
wutenghua:
[转]android 一直在最前面的浮动窗口效果 -
zee3.lin:
Sorry~~
When I build "call ...
Step by Step about How to Build libjingle 0.4
在Android中,可以从下面两点考虑来使用Java反射(Java Reflection)机制,从而达到意想不到的效果。这里也将展示Google是怎样在自己的应用中来使用Java反射机制的。
1. 同时兼容新老版本的SDK
Android往往会在新版本中引入一些新的API来替代老的API,这些新的API在性能或者易用性上比老的API更好。但为了兼容性,新老API往往是共存的。
在这种情况下,你的应用如果调用了新的API,是没办法在安装老版本Android的设备上运行的,但如果使用老的API,又没办法在安装新版本Android的设备上体现新API的性能。
这时候,就可以使用Java反射机制,从而实现一个apk,如果安装在老版本Android的设备上,则调用老的API;安装在新版本Android的设备上,则调用新的API。
下面是来自Google的一段代码:
public class SharedPreferencesCompat { private static final Method sApplyMethod = findApplyMethod(); private static Method findApplyMethod() { try { return SharedPreferences.Editor.class.getMethod("apply", new Class[0]); } catch (NoSuchMethodException e) { return null; } } public static void apply(SharedPreferences.Editor editor) { if (sApplyMethod != null) { try { sApplyMethod.invoke(editor, new Object[0]); return; } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } } editor.commit(); } }
2. 使用私有的API
如果在Eclipse上开发应用,必须调用对应的Android SDK的标准API,即在开发文档中说明的API。调用非标准的即私有的API,是编译不过的。
但Android实际上有很多API,是被@hide标注的。被@hide注解的类和方法就是私有API。如果一个应用想调用这些API,则只有在编译整个系统image的时候才能编译过,而在Eclipse上是编译不过的。所以,这些API往往会被手机开发商的本地应用调用,则第三方的应用是没办法调用的。
这种情况下,可以使用Java反射机制来调用这些私有的API。一旦编译通过生成了apk,就能正常在手机上运行,因为这样的API的实现已经在手机系统中只是没有公开出来。
下面是来自Google的一段代码:
private static final String AMR_INPUT_STREAM_CLASS = "android.media.AmrInputStream"; private static Class<?> getAmrInputStreamClass() throws ClassNotFoundException { return Class.forName(AMR_INPUT_STREAM_CLASS); } private static InputStream createAmrInputStream(InputStream in) { try { Class<?> clazz = getAmrInputStreamClass(); Constructor<?> constructor = clazz.getConstructor(new Class[] { InputStream.class }); return (InputStream)constructor.newInstance(new Object[] { in }); } ... }
发表评论
-
[Android] 为Android安装BusyBox —— 完整的bash shell
2013-12-27 10:19 1510http://www.cnblogs.com/xiaowen ... -
Windows的adb shell中使用vi不乱码方法及AdbPutty
2013-12-27 10:17 7617http://www.veryhuo.com/down/ht ... -
AppMobi推出新XDK,可创建测试PhoneGap项目
2012-09-03 13:39 2655AppMobi今天发布了一个新的工具PhoneGap Mobi ... -
Sencha
2012-09-03 12:59 1200http://www.sencha.com/ Se ... -
jQuery Mobile学习
2012-09-01 12:33 1715使用Jquery Mobile设计Android通讯录 ... -
BackBone
2012-09-01 12:34 1272Backbone.js 是一种重量级javascript M ... -
jQTouch
2012-08-30 15:57 994A Zepto/jQuery plugin for mobil ... -
SwiFTP
2012-08-30 15:43 1320SwiFTP is a FTP server that run ... -
kWS
2012-08-30 15:41 1214kWS is a lightweight and fast W ... -
jQuery Mobile
2012-08-30 15:07 1049http://jquerymobile.com/ -
PhoneGap
2012-08-30 15:07 1057http://phonegap.com/ -
Android Button background image pressed/highlighted and disabled states without
2012-08-06 12:49 1693http://shikii.net/blog/android- ... -
[AndriodTips]Image, saved to sdcard, doesn't appear in Android's Gallery app
2012-08-04 16:15 1173http://stackoverflow.com/questi ... -
Voice detection for Android
2012-07-23 11:39 2369Here it is, my fist JAVA applic ... -
[AndroidTip]local reference table overflow (max=512)的错误解决
2012-07-22 22:56 6078JNI层coding经常会遇到ReferenceTable o ... -
[AndroidTip]EditText如何初始状态不获得焦点?
2012-07-22 15:35 1235最简单的办法是在EditText前面放置一个看不到的Linea ... -
[AndroidTip]android textview滚动条
2012-07-21 14:29 1311本来是想做一个显示文字信息的,当文字很多时View的高度不能超 ... -
Google公布Android 4.1完整功能
2012-07-16 09:48 3200http://www.android.com/about/je ... -
Android开发:使用AudioTrack播放PCM音频数据【附源码】
2012-07-13 15:20 20895http://www.linuxidc.com/Linux/2 ... -
Android上的行车记录仪
2012-07-11 22:31 2021MyCar Recorder DailyRoads
相关推荐
在Android系统中,Java反射机制同样被广泛应用,尤其是在动态加载类、处理不确定类型的对象、调用私有方法或者访问私有变量等方面。下面将深入探讨Java反射机制的概念、原理及在Android开发中的应用。 一、Java反射...
一、《在android中利用JAVA反射机制终止通话》:http://www.mydreamsky.tk/?p=874 二、《Android 电话的反射调用机制实现静默接听电话》:http://blog.csdn.net/zengyangtech/article/details/6198355 源码在...
Java反射机制是Java编程语言中的一项核心特性,它允许程序在运行时动态地获取类的信息并进行操作。这使得Java能够在编译后仍然能够灵活地处理类和对象,增强了代码的动态性。在Android应用开发中,反射机制尤其重要...
### Java反射机制的原理及在Android下的简单应用 #### 一、Java反射机制的基本概念 反射(Reflection)是指程序在运行时能够访问、检测和修改它自身的能力。这种能力使得程序能够动态地获取自身的结构信息并操作...
Android平台与Web服务数据交互时运用Java反射机制解析数据的研究 本文研究了Android平台与Web服务数据交互时运用Java反射机制解析数据的技术。Java反射机制是一种在运行状态中动态获取类的信息以及动态调用对象方法...
Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类包括`Class`、`Field`、`Method`和`Constructor`等,它们分别代表...
在Android开发中,反射机制是一种强大的工具,它允许我们在运行时动态地获取类的信息或调用私有方法、访问私有变量,甚至修改类的行为。本文将深入探讨反射的概念、工作原理以及如何在Android中使用反射,通过一个...
Java反射机制是Java语言的一个重要特性,它允许程序在运行时动态地获取类的信息并创建对象,甚至可以访问私有成员。在Android开发中,反射机制有着广泛的应用,尤其是在处理框架内部逻辑、插件化开发、API兼容性等...
Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是`java.lang.Class`,它代表了类的信息。通过反射,我们可以动态地...
### Java反射机制与NoSuchMethodException详解 在Java编程中,反射是一种强大的机制,允许程序在运行时检查和修改自身结构和行为。然而,当开发者尝试使用反射调用一个不存在的方法时,便会遇到`java.lang....
要使用蓝牙设备进行通讯必须的先使两个设备之间建立连接,Android SDK中提供了一些方法可供调用,但是有些方法没有提供接口,于是参考了网上的一些资料写了这个例子,顺便学习下Android反射机制的使用,自测OK,留待...
在给定的场景中,“android java反射,通过图片名获取图片”这个主题涉及到利用反射机制来动态地加载和使用资源图片。下面将详细阐述这一知识点。 首先,我们需要理解Java反射的基本概念。Java反射是Java语言提供的...
通过Java反射机制,开发者可以访问和调用这些隐藏的类和方法,从而实现更多功能。 依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IOC)是降低程序耦合性的关键原则。传统编程中,调用者...
在Java中,反射是一种强大的工具,它允许我们在运行时检查类、接口、字段和方法的信息,甚至可以在不知道对象具体类型的情况下调用其方法。在Android中,反射可以用于动态操作数据库,尤其是在处理不确定的数据模型...
本教程将介绍如何利用Java的反射机制来实现自动拨打电话和挂断电话的功能。 首先,我们需要了解反射的基本概念。反射是Java语言的一种特性,允许运行状态中的Java程序对自身进行检查并且可以直接操作程序的内部属性...
前言: 近公司正在进行业务组件化进程,其中的路由实现用到了Java的反射机制,... JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方
### Java反射机制实现JavaBean转JSON的详细解析 #### 一、引言 在现代软件开发过程中...通过以上内容的学习与理解,开发者不仅能够更好地掌握Java反射机制的应用,还能在实际项目中更加自如地处理各种数据转换需求。
Java语言反射提供一种动态链接程序组件的多功能方法。它允许程序创建和控制任何类的对象,无需提前硬编码目标类。这些特性使得反射特别适用于创建以非常...在实际的开发中会用到的比如:手动打开状态栏(android)等等
总的来说,通过Java的注解和反射机制,我们可以构建出一个高度抽象且具有通用性的数据库访问接口,它能够适应各种不同的数据模型,极大地提高了代码的灵活性和可维护性。同时,理解Android应用的基本结构,如...