2012-06-29 12 views
12

इस तरह की कोड अच्छी तरह से काम करता है।Android AppWidget से गतिविधि कैसे शुरू करें?

Intent configIntent = new Intent (context, WidgetConfigActivity.class); 
    configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
    PendingIntent pIntent = PendingIntent.getActivity(context, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    remoteView.setOnClickPendingIntent(R.id.btn, pIntent); 

लेकिन मैं गतिविधि befor कि बटन दिखाई देगा छुपाना चाहते हैं, तो मैं onReceive() विधि में, विजेट खुद के इरादे भेजने प्रदर्शन छुपा घटकों और फिर गतिविधि शुरू करने के लिए triing कर रहा हूँ। समस्या यह है कि मैं AppWidget में startActivity() फ़ंक्शन का उपयोग नहीं कर सकता।

क्या कोई समाधान है?

उत्तर

15

समस्या यह है कि मैं AppWidget में startActivity() फ़ंक्शन का उपयोग नहीं कर सकता।

हाँ, आप कर सकते हैं। आप Context ऑब्जेक्ट को onUpdate() (या onReceive()) में AppWidgetProvider में पारित कर चुके हैं - उस पर startActivity() पर कॉल करें।

+2

कुछ भी नहीं एक अच्छा ol 'commonsware एक शुक्रवार की दोपहर पर जवाब ... इसे पसंद यह –

+0

है भगवान हे, मुझे पता है इस stackoverflow है, लेकिन मैं यह कहना होगा कह रही की तरह: मैं एक पूरे सप्ताह के अंत में खर्च के आसपास काम कर कर रही है मुझे एक गतिविधि से विजेट में एक संदर्भ प्राप्त करने के लिए एक वर्ग, केवल becaues मैंने अद्यतन अद्यतन में पारित संदर्भ नहीं देखा, हे भगवान –

13

धन्यवाद 2 CommonsWare

करने के लिए एक और बात है। इस मामले में context.startActivity();RuntimeException फेंकता है।

एक गतिविधि संदर्भ के बाहर से startActivity() कॉलिंग FLAG_ACTIVITY_NEW_TASK ध्वज की आवश्यकता है। क्या यह वास्तव में आप चाहते हैं?

तो तुम से पहले झंडा

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

सेट करना होगा।

5
// on receive function use this for new activity start 
       Intent intent = new Intent (context, AppWdget.class); 
       intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); 
       context.startActivity (intent); 
संबंधित मुद्दे