java中的反射机制在Android开发中的用处
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
然而在android中Google很多的类的某些方法不让第三方应用去调用,通过java反射机制能把这些隐藏方法获取出来并调用,三方应用上我们就很方便的去用这些方法。
例如我们需要安全的杀死某个应用的服务和进程调用ActivityManager.forceStopPackage()方法很方便
Method m = null; try { Class c = Class.forName("android.app.ActivityManager"); m = c.getMethod("forceStopPackage", Class.forName("java.lang.String") ); m.invoke(am, "com.tencent.mobileqq"); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); }
当然隐藏了这些API是为了防止第三方应用打破其他应用程序,停止服务,消除他们的警报等等。隐藏的这些api肯定也是有系统权限的,这些权限也是被隐藏的,那么我们怎么在自己的应用里去调用这些权限呢?
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.acer.shadow.apps" android:versionCode="1" android:versionName="1.0" android:sharedUserId="android.uid.system"> <uses-permission android:name ="android.permission.FORCE_STOP_PACKAGES"/>
如上,我们只需要在AndroidManifest.xml中添加android:sharedUserid="android.uid.system"这句就能调用系统的一些隐藏权限,但是这样还不行,这个应用还得签名。
用命令行进入到目录下面输入
java-jarsignapk.jarplatform.x509.pemplatform.pk8ResApp.apkDesApp.apk
ResApp.apk:要签名的apkDesApp.apk签名后生成的apk
相关推荐
边城白衣 2020-09-10
guangmingsky 2020-06-01
tydldd 2020-04-23
狼窝 2020-04-06
shangs00 2020-02-01
zhglinux 2019-12-25
缘起宇轩阁 2019-12-24
zuihaobushi 2019-12-04
free0day 2019-10-16
rookieding 2011-03-04
opera 2013-12-26
无所畏惧 2019-03-22
道行尚浅老道 2019-03-21
84590592 2010-06-28
云端轻躺 2010-08-02
zhangdell 2019-06-30
jiuweideqixu 2012-05-21
mowengaoboa 2012-04-26
阳光丶不锈 2011-01-04