2011-08-25 12 views
5

मैं इस कोड के साथ मेरी विजेट से एक प्रसारण भेजना चाहते हैं:नहीं, विजेट से लंबित आशय भेज सकते हैं SendIntentException

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 

क्या कारण है:

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); 
} 

हालांकि, मैं इस त्रुटि मिलती है ? क्या तुम्हारे पास कोई विचार है? धन्यवाद, मार्क

/संपादित करें: मुझे जवाब मिला: यह इरादा x = नया इरादा (संदर्भ, विजेट क्लास.क्लास) होना चाहिए;

+0

आपको अपने प्रश्न को स्वयं उत्तर के रूप में चिह्नित करना चाहिए। ऐसा करने के लिए आपको भी पदक मिलेगा। – patthoyts

+0

हाँ, लेकिन मुझे ऐसा करने से 8 घंटे पहले इंतजार करना होगा: पी – Force

उत्तर

2

मुझे जवाब मिला: यह इरादा x = नया इरादा होना चाहिए (संदर्भ, विजेट क्लास.क्लास);

10

मैं करने के लिए यह त्रुटि आई:

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

समाधान प्रत्येक (भेजना) PendingIntent के लिए एक अद्वितीय requestCode स्थापित करने के लिए था, और इस के लिए मैं प्रदान की appWidgetId के बजाय सिर्फ एक का उपयोग कर इस्तेमाल किया प्रत्येक बार 0

getBroadCast()

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

getActivity()

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

किसी अज्ञात कारण से यह यह कहता है के लिए दस्तावेज में "वर्तमान में उपयोग नहीं"?

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

लेकिन यह काम करता है;)

+0

मुझे लगता है कि अनुरोध कोड का उपयोग लंबित INTent.FLAG_CANCEL_CURRENT और लंबित INTent.FLAG_UPDATE_CURRENT – nmr

+0

के माध्यम से अपडेट और प्रतिस्थापन से मेल खाने के लिए किया जाता है और किसी कारण से 0 का अनुरोध कोड ' टी काम नहीं – nmr

0

मुझे लगता है कि अनुरोध कोड PendingIntent.FLAG_CANCEL_CURRENT और PendingIntent.FLAG_UPDATE_CURRENT के माध्यम से अद्यतन और प्रतिस्थापन मिलान करने के लिए किया जाता है।

संबंधित मुद्दे