服务端代码:
生成的aidl文件:
interface IMyAidlInterface {
String getUserName();
String getPassword();
}
自定义一个服务:
public class LzyService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return myBinder;
}
public final IMyAidlInterface.Stub myBinder = new IMyAidlInterface.Stub() {
@Override
public String getUserName() throws RemoteException {
return "lzy";
}
@Override
public String getPassword() throws RemoteException {
return "nb666plus";
}
};
}
清单文件注册服务:
<service android:name=".LzyService">
<intent-filter>
<action android:name="lzy.server"/>
</intent-filter>
</service>
启动服务:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(this,LzyService.class));
}
}
客户端代码:
先把服务端aidl文件复制一份到客户端:
public class MainActivity extends AppCompatActivity {
private String password;
private String userName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent();
intent.setAction("lzy.server");
intent.setPackage("com.example.michael.ipc"); //兼容5.0
bindService(intent,serviceConnection,BIND_AUTO_CREATE);
Button btnUserName = findViewById(R.id.btn_userName);
Button btnPsw = findViewById(R.id.btn_psw);
btnUserName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), userName,Toast.LENGTH_SHORT).show();
}
});
btnPsw.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), password,Toast.LENGTH_SHORT).show();
}
});
}
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
IMyAidlInterface iMyAidlInterface = IMyAidlInterface.Stub.asInterface(service);
try {
userName = iMyAidlInterface.getUserName();
password = iMyAidlInterface.getPassword();
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
}
布局文件简单写几个按钮:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.michael.pic2.MainActivity">
<Button
android:id="@+id/btn_userName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名"
/>
<Button
android:id="@+id/btn_psw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码"
/>
</LinearLayout>
效果演示: