2011-08-25 13 views
5

Quiero enviar una transmisión desde mi aparato con este código:No se puede enviar la intención pendientes de flash, SendIntentException

for (int i = 0; i < N; i++) { 
    int appWidgetId = appWidgetIds[i]; 
    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 
    Intent x = new Intent(); 
    if (isActive == true) { 
     views.setImageViewResource(R.id.w_image, R.drawable.w_bild); 
     x.setAction("de.bulling.smstalk.DISABLE"); 
    } else { 
     views.setImageViewResource(R.id.w_image, R.drawable.w_bild_off); 
     x.setAction("de.bulling.smstalk.ENABLE"); 
    } 
    PendingIntent z = PendingIntent.getBroadcast(context, 0, x, PendingIntent.FLAG_ONE_SHOT); 
    views.setOnClickPendingIntent(R.id.w_image, z); 
    appWidgetManager.updateAppWidget(appWidgetId, views); 
} 

Sin embargo, me sale este error:

E/RemoteViews(18176): Cannot send pending intent: 
E/RemoteViews(18176): android.content.IntentSender$SendIntentException 
E/RemoteViews(18176): at android.app.ContextImpl.startIntentSender(ContextImpl.java:640) 
E/RemoteViews(18176): at android.widget.RemoteViews$SetOnClickPendingIntent$1.onClick(RemoteViews.java:157) 
E/RemoteViews(18176): at android.view.View.performClick(View.java:2408) 
E/RemoteViews(18176): at android.view.View$PerformClick.run(View.java:8816) 
E/RemoteViews(18176): at android.os.Handler.handleCallback(Handler.java:587) 
E/RemoteViews(18176): at android.os.Handler.dispatchMessage(Handler.java:92) 
E/RemoteViews(18176): at android.os.Looper.loop(Looper.java:123) 
E/RemoteViews(18176): at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/RemoteViews(18176): at java.lang.reflect.Method.invokeNative(Native Method) 
E/RemoteViews(18176): at java.lang.reflect.Method.invoke(Method.java:521) 
E/RemoteViews(18176): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
E/RemoteViews(18176): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
E/RemoteViews(18176): at dalvik.system.NativeStart.main(Native Method 

¿Cuál es la razón de esto ? ¿Tiene alguna idea? Gracias , Marc

/editar: He encontrado la respuesta: Tiene que ser Intención x = new Intent (contexto, WidgetClass.class);

+0

Debe marcar su pregunta como autocompuesta. Incluso obtendrás una medalla por hacerlo. – patthoyts

+0

Sí, pero tengo que esperar 8 horas antes de poder hacer eso: P – Force

Respuesta

2

Encontré la respuesta: Tiene que ser Intento x = nuevo Intención (context, WidgetClass.class);

10

me dio este mensaje a:

RemoteViews: Cannot send pending intent: 
RemoteViews: android.content.IntentSender$SendIntentException 
RemoteViews: at android.app.ContextImpl.startIntentSender() 

La solución fue crear un requestCode única para cada uno (enviar) PendingIntent, y para esto he utilizado el proporcionado appWidgetId en lugar de usar un cada vez.

getBroadCast()

pendingActionIntent=PendingIntent.getBroadcast(this, widgetId, intentAction, pendingFlag);

getActivity()

pendingActionIntent=PendingIntent.getActivity(this, widgetId, intentAction, pendingFlag);

Por alguna razón desconocida que dice que "en la actualidad no se utiliza" en la documentación?

requestCode Private request code for the sender (currently not used).

pero funciona;)

+0

Creo que los códigos de solicitud se usan para hacer coincidir actualizaciones y reemplazos a través de PendingIntent.FLAG_CANCEL_CURRENT y PendingIntent.FLAG_UPDATE_CURRENT – nmr

+0

Y por alguna razón, un código de solicitud de 0 doesn ' t trabajo – nmr

0

creo que los códigos de solicitud se utilizan para que coincida con las actualizaciones y reemplazos a través PendingIntent.FLAG_CANCEL_CURRENT y PendingIntent.FLAG_UPDATE_CURRENT.

Cuestiones relacionadas