2014-06-06 13 views
9

पर ऐप अपडेट होने पर हर बार विजेट गायब हो रहा है मेरे पास मेरे ऐप में 2 विजेट हैं। दोनों में समान सुविधाएं हैं, लेकिन विभिन्न लेआउट के साथ। वे हर डिवाइस पर ठीक काम करते हैं, लेकिन ऐसा लगता है कि सैमसंग उपकरणों पर कोई समस्या है। हर बार जब मैं ऐप का एक नया संस्करण प्रकाशित करता हूं, तो विजेट को उपयोगकर्ता स्क्रीन से हटा दिया जाता है। ऐसा लगता है कि यह एक सैमसंग टचविज़ बग है, लेकिन उपयोगकर्ता मुझे बता रहा है कि अन्य ऐप्स में यह समस्या नहीं है। क्या हो रहा है इसके बारे में कोई विचार?सैमसंग डिवाइस

BTW मैं एक पल है कि मैं इस ब्लॉग पोस्ट में इसे ठीक करने के लिए एक रास्ता मिल गया सोचा: https://medium.com/the-wtf-files/the-mysterious-case-of-the-disappearing-widget-f4177a8e2c2b लेकिन मैं मैन्युअल रूप से बुला नहीं कर रहा हूँ

updateIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); 

इसके बजाय मैं फोन कर रहा हूँ

घटक नाम सीएन = नया घटक नाम (संदर्भ, क्लैज); AppWidgetManager.getInstance (संदर्भ) .updateAppWidget (सीएन, विचार);

क्रम में मेरी विजेट अद्यतन करने के लिए मेरे कोड का

अधिक:

public static final int layout = R.layout.widget_large_layout; 
    public static final BitmapQualityEnum thumbnailQuality = BitmapQualityEnum.HIGH_RES; 
    public static final Class<?> clazz = LargeWidgetProvider.class; 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
     if (context != null && appWidgetIds != null && appWidgetIds.length > 0) { 
      // To prevent any ANR timeouts, we perform the update in a service 
      context.startService(new Intent(context, LargeWidgetProvider.UpdateService.class)); 
     } 
    } 


    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (context != null && intent != null) { 
      boolean doUpdate = true; 
      if ("android.appwidget.action.APPWIDGET_UPDATE".equals(intent.getAction())) { 
       final int[] widgetIds = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS); 
       doUpdate = (widgetIds != null && widgetIds.length > 0); 
      } 

      if (doUpdate) { 
       WidgetProviderHelper.receive(context, intent, clazz, layout, thumbnailQuality); 
      } 
      super.onReceive(context, intent); 
     } 
    } 

public static class UpdateService extends Service { 

     private int serviceStartId = -1; 

     @Override 
     public boolean onUnbind(Intent intent) { 
      stopSelf(this.serviceStartId); 
      return true; 
     } 

     @Override 
     public int onStartCommand(Intent intent, int flags, int startId) { 
      this.serviceStartId = startId; 
      // Push update for this widget to the home screen 
      updateData(this); 
      return START_STICKY; 
     } 

     @Override 
     public void onConfigurationChanged(Configuration newConfig) { 
      super.onConfigurationChanged(newConfig); 
      //   int oldOrientation = this.getResources().getConfiguration().orientation; 
      //   if (newConfig.orientation != oldOrientation) { 
      // Update the widget) { 
      updateData(this); 
      //   } 
     } 


     @Override 
     public IBinder onBind(Intent intent) { 
      // We don't need to bind to this service 
      return null; 
     } 
    } 
+0

मैं भी गायब विगेट्स (और प्रतीक) सैमसंग उपकरणों पर के साथ मुद्दों था और उसे सक्षम है कि/प्रोग्राम के रूप में मेरे एप्लिकेशन में घटकों को अक्षम करने निकला (विगेट्स खुद से संबंधित नहीं घटकों) टचविज में गड़बड़। यदि आप अपना अधिक विजेट कोड पोस्ट करते हैं (जैसे ऑनसेसिव/ऑनअपडेट मैं संभावित मुद्दों के लिए इसे देख सकता हूं। –

+0

मुझे तर्क मिलता है कि "आपके ऐप में यह समस्या है लेकिन अन्य ऐप्स बहुत कुछ नहीं हैं। काउंटर तर्क" 99.9 हो सकता है मेरे सौ हजार उपयोगकर्ताओं में से इस समस्या के पास नहीं है, तो आपके डिवाइस में क्या गलत है? ";-)। यदि एक ऐप में से एक कहते हैं कि 200 में इस समस्या के साथ 100'000 इंस्टॉलेशन में से 5 डिवाइसों की तुलना में एक समस्या (0.5%) है तो स्पष्ट रूप से संभावना है कि डिवाइस में कोई समस्या है जो ऐप से अधिक है मुसीबत। बेशक सच आमतौर पर बीच में होता है और यह आमतौर पर कारकों का संयोजन होता है)। –

+0

@ ईमानुअल मोक्लिन इससे कोई फर्क नहीं पड़ता कि केवल कुछ उपयोगकर्ताओं को समस्या है। हां शायद 20 उपयोगकर्ताओं ने 500 के + के बाहर इस मुद्दे की सूचना दी लेकिन उनके सभी में एक सैमसंग डिवाइस आम है। इसके अलावा अधिकांश उपयोगकर्ता ऐप विजेट का उपयोग नहीं कर रहे हैं और अधिकांश उपयोगकर्ता समस्या के बारे में शिकायत नहीं कर सकते हैं। तो हाँ, मैं इस समस्या को ठीक करना चाहता हूं;) – user1026605

उत्तर

2

मैं अंत में मेरी इस मुद्दे को हल करने में कामयाब रहे। विजेट प्रदाता रिसीवर को निर्यात करने की आवश्यकता है !!

<receiver 
     android:name=".widget.HorizontalWidgetProvider" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
      <action android:name="com.customEvent" /> 
     </intent-filter> 

     <meta-data 
      android:name="android.appwidget.provider" 
      android:resource="@xml/widget_horizontal_provider" /> 
    </receiver> 
+3

इस http: // डेवलपर के अनुसार .android.com/गाइड/विषय/मेनिफेस्ट/रिसीवर-element.html # निर्यात किए गए ध्वज को निर्यात करना स्वचालित रूप से सत्य पर सेट होना चाहिए यदि रिसीवर का इरादा-फ़िल्टर है तो मुझे लगता है कि यह एक और TouchWiz बग है। –

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