main
public class MainActivity extends AppCompatActivity {
private EditText ed1;
private EditText ed2;
private IMyAidlInterface iMyAidlInterface;
private TextView tv;
@Override
protected void onCreate ( Bundle savedInstanceState) {
super . onCreate ( savedInstanceState) ;
setContentView ( R. layout. activity_main) ;
tv = ( TextView) findViewById ( R. id. tv) ;
ed1 = ( EditText) findViewById ( R. id. ed1) ;
ed2 = ( EditText) findViewById ( R. id. ed2) ;
Intent intent = new Intent ( ) ;
intent. setAction ( "niubi" ) ;
intent. setPackage ( "com.example.app2" ) ;
ServiceConnection connection = new ServiceConnection ( ) {
@Override
public void onServiceConnected ( ComponentName componentName, IBinder iBinder) {
iMyAidlInterface = IMyAidlInterface. Stub. asInterface ( iBinder) ;
}
@Override
public void onServiceDisconnected ( ComponentName componentName) {
}
} ;
bindService ( intent, connection, BIND_AUTO_CREATE) ;
}
public void click ( View view) {
String eda = ed1. getText ( ) . toString ( ) ;
String edb = ed2. getText ( ) . toString ( ) ;
int a = Integer. parseInt ( eda) ;
int b = Integer. parseInt ( edb) ;
try {
int plus = iMyAidlInterface. plus ( a, b) ;
tv. setText ( plus+ "" ) ;
} catch ( RemoteException e) {
e. printStackTrace ( ) ;
}
}
}
MyService
public class MyService extends Service {
public MyService ( ) {
}
@Override
public IBinder onBind ( Intent intent) {
return binder;
}
IBinder binder= new IMyAidlInterface. Stub ( ) {
@Override
public void basicTypes ( int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException {
}
@Override
public int plus ( int a, int b) throws RemoteException {
return a+ b;
}
} ;
}
aidl
interface IMyAidlInterface {
void basicTypes ( int anInt, long aLong, boolean aBoolean, float aFloat,
double aDouble, String aString) ;
int plus ( int a, int b) ;
}