6,彩信发送流程
发送彩信可以调用MmsManager.java的sendMultimediaMessage方法就可以发送彩信。
CTS 测试彩信部分代码如下,
final SmsManager smsManager = SmsManager.getDefault();
•••
smsManager.sendMultimediaMessage(context,
contentUri, null/*locationUrl*/, null/*configOverrides*/, pendingIntent);
当然,还有通过蓝牙也可以发送彩信, packages/apps/Bluetooth的BluetoothMapContentObserver.java 方法也会调用这个接口发送彩信。
6.1 binder对象获取
MmsManager.java的sendMultimediaMessage方法调用流程图如下,
sendMultimediaMessage方法逻辑如下,
1,首先获取Imms对应的binder对象,
final IMms iMms = IMms.Stub.asInterface(ServiceManager.getService("imms"));
2,然后调用其sendMessage方法,
iMms.sendMessage(getSubscriptionId(), ActivityThread.currentPackageName(), contentUri,
locationUrl, configOverrides, sentIntent);
现在的问题是, imms 对应的是哪个binder对象呢?
在frameworks\base\services\core\java\com\android\server路径下的MmsServiceBroker的onStart方法中,
publishBinderService("imms", new BinderService());
MmsServiceBroker继承SystemService,
public class MmsServiceBroker ex