ClassCastException durante el uso del servicio
Definí un servicio local:
public class ComService extends Service implements IComService { private IBinder binder = new ComServiceBinder(); public class ComServiceBinder extends Binder implements IComService.IServiceBinder { public IComService getService() { return ComService.this; } } public void test(String msg) { System.out.println(msg); } @Override public IBinder onBind(Intent intent) { return binder; } }
La interfaz correspondiente:
- ¿Cómo puedo configurar el color del trazo de la barra de calificación de Android? (No el color de las estrellas pero la FRONTERA)
- El audio no está claro durante la transmisión entre una clase de Java y la actividad de Android
- Enviar int s entre Java y C
- ¿Cómo usar Wake Lock para android mediaplayer?
- ¿Los comentarios afectan el tiempo de compilación?
public interface IComService { public void test(String msg); public interface IServiceBinder { IComService getService(); } }
A continuación, intento vincular el servicio en otra actividad en otra aplicación, donde la misma interfaz está disponible:
bindService(new Intent("ch.ifi.csg.games4blue.gamebase.api.ComService"), conn, Context.BIND_AUTO_CREATE);
y
private ServiceConnection conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.i("INFO", "Service bound " + name); comService = ((IComService.IServiceBinder)service).getService(); serviceHandler.sendEmptyMessage(0); } @Override public void onServiceDisconnected(ComponentName arg0) { Log.i("INFO", "Service Unbound "); } };
pero la línea
comService = ((IComService.IServiceBinder)service).getService();
siempre lanza un
05-02 22:12:55.922: ERROR/AndroidRuntime(622): java.lang.ClassCastException: android.os.BinderProxy
No puedo explicar por qué, he seguido el ejemplo de la aplicación en http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalServiceBinding.html
Cualquier sugerencia sería agradable!
- Inicializar Array en una matriz
- (OpenCV) no puede encontrar Core.line en Android Studio
- ¿Cómo puedo detectar formas geométricas 2D básicas (por ejemplo, cuadrado, triángulo, círculo) en una imagen JPEG?
- Aplicación de reconocimiento de voz de Android sin pop-up
- ¿Cuál es la mejor manera de comprobar si una cadena contiene una URL en Java / Android?
- Pruebas de instrumentación Android con Mockito
- ¿Qué es alertcontroller.recyclelistview
- Cómo convertir ZonedDateTime / OffsetDateTime a Date usando ThreeTenABP?
Debe utilizar AIDL para definir interfaces que abarquen aplicaciones (los llamados "servicios remotos"). Ha seguido un ejemplo de enlace local, pero no está utilizando enlace local. Pruebe este y este proyecto de ejemplo para un ejemplo de enlace remoto utilizando AIDL.