最近在学习AIDL,实现了一个调用第三方登录的功能
主要就是两个APP MyApplication和AIDLServerApplication,MyApplication是客户端,AIDLServerApplication是服务端。客户端就是一个按钮,点击跳转到服务端那边进行登录操作,登录完成给客户端发送一个消息,告知登录成功,登录失败也会告知一个回调
下面是效果图:
客户端:
服务端:
服务端的代码:
服务端的结构图:
1、首先是新建一个aidl,代码如下
interface ILoginAidlInterface {
//登录
void login(String name,String pwd);
//登录的回调
void loginCallback(boolean isSuccess,String username);
}
2、然后build一下,会生成对应的Java文件
3、注册服务端的服务
/**
* 远程调用
*/
public class LoginService extends Service {
public LoginService() {
}
@Override
public void onCreate() {
super.onCreate();
Log.e("firstActivity","service create");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("firstActivity","service onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
Log.e("firstActivity","service bind");
return stub;
}
ILoginAidlInterface.Stub stub = new ILoginAidlInterface.Stub() {
@Override
public void login(String name, String pwd) throws RemoteException {
Log.e("firstActivity","service login");
Intent intent = new Intent(getApplicationContext(),FirstActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication()