6

से गतिविधि कैसे लॉन्च करें मैं होम स्क्रीन विजेट्स को कार्यान्वित करने के तरीके के बारे में अपने सिर को लपेटने की कोशिश कर रहा हूं। अभी, मैं (आखिरकार) मेरे विजेट पर एक बटन प्राप्त करने में सक्षम था, जो एक बटन प्रेस को मैनिफेस्ट में एक इरादा फ़िल्टर सेट अप करने का जवाब देता था।एंड्रॉइड होम स्क्रीन विजेट

हालांकि, मैं अपने जीवन के लिए यह नहीं समझ सकता कि बटन दबाए जाने पर गतिविधि कैसे लॉन्च किया जाए।

@Override 
public void onReceive(Context context, Intent intent) 
{ 
     super.onReceive(context, intent); 
     if(intent.getAction().equals("com.bic.search.searchWidget.CLICK")) 
     { 
      Toast.makeText(context, "It works!!", Toast.LENGTH_SHORT).show(); 
     } 
} 

क्या मैं सच में करना चाहते हैं, हालांकि, एक नई गतिविधि शुरू करते हैं, एक टोस्ट संदेश प्रदर्शित नहीं है: मूल रूप से, यहाँ कोड मैं है। मुझे पता है कि लंबित इरादों के साथ इसका कुछ संबंध है, लेकिन मैं यह समझ नहीं सकता कि इसे कैसे काम करना है।

कोई भी मदद और नमूना कोड की सराहना की जाएगी। धन्यवाद जो भी इसका उत्तर देता है!

उत्तर

13

ठीक है, आपके ऐप विजेट में पहले से ही PendingIntent होना चाहिए जो आपने बटन से जुड़ा हुआ है। के बजाय BroadcastReceiver को ट्रिगर करता है, तो यह PendingIntent है जो Activity शुरू करता है।

+0

लिंक टूटा हुआ है, क्या आप इसे ठीक कर सकते हैं? – Joel

+0

@ जोएल: क्षमा करें, मेरे पास एक वर्तमान प्रोजेक्ट नहीं है जो इसे प्रदर्शित करता है। – CommonsWare

0

आप अपनी समस्या को हल करने के लिए इस कोड का उपयोग कर सकते हैं।

public class Widget extends AppWidgetProvider { 

     // ... 

     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 

      for(int i = 0; i < appWidgetIds.length; i++){ 

       RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.widget); 

       Intent startActivityIntent = new Intent(context, myActivity.class); 
       PendingIntent startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
       widget.setPendingIntentTemplate(R.id.list_view, startActivityPendingIntent); 

       appWidgetManager.updateAppWidget(appWidgetIds[i], widget); 

       // ... 
     } 
    } 

    public class WidgetAdapter implements RemoteViewsService.RemoteViewsFactory { 

     // ... 

     @Override 
     public RemoteViews getViewAt(int position) { 

     RemoteViews widgetRow = new RemoteViews(context.getPackageName(), R.layout.widget_row); 

      Intent fillInIntent = new Intent(); 
      fillInIntent.putExtra(Widget.EXTRA_LIST_VIEW_ROW_NUMBER, position); 
      widgetRow.setOnClickFillInIntent(R.id.list_view_row, fillInIntent); 

      // ... 

      return row; 
     } 
    } 

आशा है कि इससे मदद मिलती है!

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