2011-08-25 10 views
5

voglio inviare una trasmissione dal mio widget di con questo codice:Impossibile inviare intento sospeso dal widget di, 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); 
} 

Tuttavia, ottengo questo errore:

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 

Qual è la ragione di questo ? Hai qualche idea? Marc, Marc

/modifica: Ho trovato la risposta: Deve essere Intent x = new Intent (context, WidgetClass.class);

+0

È necessario contrassegnare la domanda come risposta autonoma. Avrai anche una medaglia per farlo. – patthoyts

+0

Sì, ma devo aspettare 8 ore prima di poterlo fare: P – Force

risposta

2

Ho trovato la risposta: Deve essere Intent x = new Intent (context, WidgetClass.class);

10

ho ottenuto questo errore a:

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

La soluzione era quella di impostare un requestCode unicoper ogni (invio) PendingIntent, e per questo ho usato il previsto appWidgetId invece di utilizzare un ogni volta.

getBroadCast()

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

getActivity()

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

Per qualche motivo sconosciuto dice che "al momento non utilizzato" nella documentazione?

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

ma funziona;)

+0

Penso che i codici di richiesta siano usati per abbinare aggiornamenti e sostituzioni tramite PendingIntent.FLAG_CANCEL_CURRENT e PendingIntent.FLAG_UPDATE_CURRENT – nmr

+0

E per qualche ragione un codice di richiesta di 0 non fa lavoro – nmr

0

Credo che i codici di richiesta sono usate per abbinare gli aggiornamenti e le sostituzioni via PendingIntent.FLAG_CANCEL_CURRENT e PendingIntent.FLAG_UPDATE_CURRENT.

Problemi correlati