注意事项:
1.服务端app,创建的serViece 一定不要忘记在AndroidManifest里面声明,并且设置可以被外面app访问
<service android:name=".service.ServerService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="link.remote.service"/>
</intent-filter>
</service>
2.android 5.0以后绑定service,此时intent 必须设置当前应用的packageName
3.检查当前intent是否可用,可用再去绑定bindService,否则会有其它错误
private static Intent getExplicitIntent(Context context, Intent implicitIntent) { PackageManager pm = context.getPackageManager(); List<ResolveInfo> resolveInfo = pm.queryIntentServices(implicitIntent, 0); if (resolveInfo == null || resolveInfo.size() != 1) { return null; } ResolveInfo serviceInfo = resolveInfo.get(0); String packageName = serviceInfo.serviceInfo.packageName; String className = serviceInfo.serviceInfo.name; ComponentName component = new ComponentName(packageName, className); Intent explicitIntent = new Intent(implicitIntent); explicitIntent.setComponent(component); return explicitIntent; }
总结:AIDL连接成功后,我们可用通过IMyAidlInterface(根据自己的定义接口)对象实时访问服务端数据,或者传输数据,前提是连接没有断开