在我的应用程序中,我有两个单独的 APK。第一个 APK 的 Activity (A1) 启动本地服务,并能够调用该服务提供的方法。稍后活动 A1 从第二个 APK 启动另一个活动 (A2)。A2 活动尝试连接到由 A1 启动的本地服务。这两个活动都在具有相同 SharedUserID 的同一进程中运行。提供服务接口,如 LocalService 的 API 示例所示。服务的 onBind 方法返回具有方法 getService() 的 LocalBinder 实例。当调用 A2 的 onServiceConnected 时,当我尝试从 IBinder 转换为 MyService.LocalBinder 时,我得到了 ClassCastException。
在调试器中,我可以看到 A2 活动的 onServiceConnected 的服务参数是 MyService.LocalBinder 的正确实例。我什至可以在调试器中查看 MyService 的所有属性,但是当我尝试将 IBinder 服务强制转换为 MyService.LocalBinder 时,我得到了 ClassCastException 异常?有什么办法还是我必须使用 AIDL?
public void onServiceConnected(ComponentName className, IBinder service)
{
try
{
MyService.LocalBinder binder = (MyService.LocalBinder)service;
m_IService = binder.getService();
}
catch(ClassCastException e)
{
}
}