这篇文章就只是简单讲解以下AIDL的使用,如果需要详细的文档说明之类的请自行百度,Google【手动滑稽】
新建两个项目AIDLClient,AIDLService一个作为客户端,一个作为服务端
在客户端中新建AIDL文件
会有一个默认的basicTypes函数,在这下面我们新建一个ssoAuth函数
因为客户端是调用端,因此,只需要定义AIDL文件,此时Rebuild一下会生成一个SsiAuth.java文件(ps:这里给大家安利一下:Android Studio中遇到过的错误问题与解决方案汇总,然后就是在引用外部类一定要记得import!!!!blablablabla)
这是后客户端弄好了就开始配置服务端,直接把客户端app/src/main下的aidl copy到服务端同目录下(ps:你也可以自己新建,但是AIDL一定要包名相同,不然会报错的)
配置好服务端AIDL,Rebuild(ps:前面说了build后会生成一个java文件,然后该文件中有一个Stub类实现了SsoAuth接口),然后我们先需要定义一个Service子类,然后再定义一个继承自Stub的子类,并且在Service的onBind函数中返回这个Stub子类的对象。
完成ZhouZiSsoAuthService之后,到Manifest中去注册。
因为是外部访问这个service,所以exported一定不能=“false”,不然外部访问不了!!!
到这里服务端的东西就搞完了,run起来,切回客户端。
没下载截图软件,将就看吧。。拼上就好
上面代码逻辑就不解释了,需要注意的是,bindService的时候咱们是隐式的但是在Android5.0之后service的intent一定要显性声明,所以createExplicitFromImplicitIntent的作用就是将隐性调用变成显性调用
最后客户端run起来