Android 1.5之后将调节亮度的api隐藏了,不过android的源码中依然有方法可以实现,如下:

复制代码 代码如下:
IPowerManager power = IPowerManager.Stub.asInterface(ServiceManager

              .getService("power"));

if (power != null) {

   power.setBacklightBrightness(brightness);

上面的代码无法直接在官方的sdk中调用,会提示找不到IpowerManager和I ServiceManager,需要下载android的源码,将调用这个方法的工程在android源码环境下编译。

编译方法如下,在调用该方法的工程根目录下创建Android.mk文件:

复制代码 代码如下:
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := user

LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := myProject

LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)


另外,还需要在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。(更正,这个属性不需要添加)

将工程目录拷贝到/packages/apps/下,执行mmm编译。会在out目录下生成apk文件,这里的apk还无法直接使用,会提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform key。

接下来使用platform key对apk签名:

1. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。

2. 使用目标系统的platform密钥来重新给apk文件签名。首先找到密钥文件,在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"java �Cjar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk"

签名后的apk就可以使用了,通过这种方法还可以使用其他的隐藏api。

更多相关文章

  1. Android开发:Android虚拟机启动错误Can't find 'Linux version '
  2. Android(安卓)UI日志
  3. Android(安卓)Studio编译一次源码versionCode自增
  4. Android(安卓)获取manifest.xml中meta-data值遇到的问题
  5. android通过servlet上传文件到服务器
  6. Android培训班(14)
  7. Android为textView设置setText的时候报错
  8. ListView分页(带图片)显示用法案例
  9. android条形码二维码

随机推荐

  1. Android(安卓)Studio编译问题-Error:Coul
  2. Why I got an empty folder after "git c
  3. 使用ARouter 时 提示 There is no route
  4. Android(安卓)- JNI加入标准C++文件
  5. Android子线程不可以刷新UI么?
  6. PackageInstaller 原理简述
  7. Android(安卓)UI之Notification
  8. 错误记录seterror的文字不显示
  9. Android实用插件,持续更新
  10. 【Android】fragment+Viewpager+自动隐藏