android aidl通讯两个APP之间的应用
16lz
2021-01-23
一:数据提供端代码(数据提供APP)
1.java代码:Service
package com.example.remoteaidi;import com.example.remoteaidi.aidl.StudentAidl;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.os.RemoteException;public class StudentService extends Service {private String[] studentNo = {"王1","2","王3","王4","王月4","宋6"};private IBinder binder = new StudentQueryBinder();@Overridepublic IBinder onBind(Intent intent) {return binder;}class StudentQueryBinder extends StudentAidl.Stub {@Overridepublic String getStudent(int no) throws RemoteException {int l = studentNo.length;if(l<0) {no = 0;}if(no>=l) {no = l - 1;}return studentNo[no];}}}
aidl文件 package com.example.remoteaidi.aidl;interface StudentAidl {String getStudent(int no);}
清单文件
<?xml version="1.0" encoding="utf-8"?>
二:请求端代码
package com.example.aidlclient;import com.example.remoteaidi.aidl.StudentAidl;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.os.RemoteException;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {private ServiceConnectionImpl sci ;private StudentAidl student;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent = new Intent();intent.setAction("student.query");sci = new ServiceConnectionImpl();bindService(intent, sci, BIND_AUTO_CREATE);}public void queryOnClick(View v) {EditText et_no_text = (EditText) findViewById(R.id.et_no_text);String no = et_no_text.getText().toString();String sname;try {sname = student.getStudent(new Integer(no));TextView tv_no = (TextView) findViewById(R.id.tv_no);tv_no.setText(sname);} catch (NumberFormatException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();}}class ServiceConnectionImpl implements ServiceConnection {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {student = StudentAidl.Stub.asInterface(service);}@Overridepublic void onServiceDisconnected(ComponentName name) {student = null;}}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();if(sci != null) {unbindService(sci);}}}
aidl文件与上一个aidl文件相同
package com.example.remoteaidi.aidl;interface StudentAidl {String getStudent(int no);}
<?xml version="1.0" encoding="utf-8"?>
更多相关文章
- Android内核的根文件系统
- 开发中常用到的几处代码设置
- android获取文件目录
- Android代码实现APK文件的安装与卸载
- Android 文件实现断点上传
- Android 发送短信 源代码
- Android 存储方式之文件存储
- Android 下载文件 显示进度条