Android caches the binder returned from onBind so if your actions are very similar and your app binds first, then your binder will be returned to the system one instead of the system binder (returned from super.onBind(intent)
Luckily, Android keys the binder cache based on the intent action. I would give your intent some dummy action so that it doesn't get mixed with the system one. I've solved the same problem by doing this. NOTE: categories are not sufficient.