Android 添加系统服务 android 添加系统权限
1、 撰写一个aidl文件,定义服务的接口,将在编译过程中通过aidl工具生成对应的java接口。一般系统服务的aidl文件都放在frameworkbasecorejavaandroidos目录中。
以我所写的IMyTool.aidl为例。在.aidl中定义自己需要加入的方法,编写规则和java接口差不多,这里不多说。
2、 将aidl文件名添加到frameworksbase目录下的Android.mk编译脚本文件中。
如:
LOCAL_SRC_FILES +=
core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
…
core/java/android/os/IMyTool.aidl
…
IMyTool.aidl即我加进去的aidl文件,加入后才能在make过程中编译到,否则将在后面的SystemServer添加系统服务时会报错提示找不到对应类。
3、 编写真正工作的服务类,继承IMyTool.Stub类(AIDL文件名.Stub,aidl生成的接口中的内部类,是一个Binder)。
服务类一般都放在frameworkbaseservicesjavacomandroidserver目录中。
例如:
public class MyToolService extends IMyTool.Stub {
实现IMyTool.aidl中定义的接口。
}
4、 将自定义服务注册到SystemServer,使得开机过程中被添加。
在frameworkbaseservicesjavacomandroidserver目录中的SystemServer中启动服务代码处加入:
try {
Slog.i(TAG, "MyToolService");
ServiceManager.addService(Context.MY_TOOL_SERVICE,new MyToolService(context));//MyToolService构造函数自己定义,一般都会用到Context
} catch(Throwable e) {
Slog.e(TAG, "Failure startingMyToolService", e);
}
上面代码中Context.MY_TOOL_SERVICE是自己在Context类中定义的常量,也就是给服务定义的名字,使用常量方便获取服务,而不需要记住注册服务时用的名字,且想换名字时只需改一个常量的值。
5、 由于在工程中添加了自己定义的类及常量,系统的api没有更新,因此需要先在工程中make clean然后make update-api,执行完后会发现frameworksbaseapicurrent.xml文件中多出自己定义的一些东西。current.xml这个文件包含了所有系统所有能被应用层使用的类及其方法等。
之后再使用make编出来的固件及jar包就能包含自定义的接口。
编译后如何使用:
将编出来的jar包通过lib方式导入工程。jar包位置:outtargetcommonobjJAVA_LIBRARIESframework_intermediatesclasses.jar
调用以下代码获取自定义服务:
IMyTool myTool = IMyTool.Stub.asInterface(ServiceManager.getService(MY_TOOL_SERVICE));
MY_TOOL_SERVICE即在Context中定义的常量。获取到myTool后就可以调用在aidl文件中定义的接口了。
更多阅读
安卓手机如何获得root权限 安卓手机一键root
安卓手机如何获得root权限——简介 手机root权限,是系统权限的一种。很多手机都自带很多没用的软件。但是自己却不能删除这些软件,因为自己的权限不够。这时候,你只要把手机ROOT一遍,你就能拥有手机的最高权限了。随意删除手机里面的任
三星I9500如何实现ROOT i9500 4.4.2 root
三星I9500如何实现ROOT——简介三星I9500是一款采用安卓操作系统的智能手机产品,默认出厂时安卓系统对系统权限进行了限制,用户无法使用一些高权限的应用或进行一些高权限的操作。下面本文就来介绍一种安卓通用ROOT方法,希望可以对大家
设置手机的应用权限管理 乐视手机应用权限管理
设置手机的应用权限管理——简介随着移动互联网的发展,现在的手机安装APP应用越来越丰富,在安装应用的同时这些《应用》也就拥有了一些搜集数据的系统权限,在丰富您的生活同时个人的隐私也随之有可能遭到泄露,在我们不觉察中,大量的应用
在Win7系统中添加打印机的方法 xp系统添加网络打印机
在Win7系统中添加打印机的方法——简介Windows7操作系统和之前用户群体庞大的WindowsXP操作系统在操作上大同小异,但是还是有些区别。对于Win7如何添加打印机,很多用户还不是很了解。这里我们做一个简单的教程,教会大家如何在Win7操作
华为手机怎样获取root权限 精 华为root权限获取教程
华为手机怎样获取root权限 精——简介root权限,系统权限的一种,与SYSTEM权限可以理解成一个概念,但高于Administrator权限,root是Linux和unix系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作。安卓系