Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

93
Views
¿Cuáles son las posibles razones por las que mi AppWidgetProvider recibirá datos de una aplicación de terceros en onReceive?

Recientemente, estoy experimentando un extraño informe de bloqueo de Firebase Crashlytics.

 Caused by android.os.BadParcelableException: ClassNotFoundException when unmarshalling: id.dana.model.CurrencyAmountModel at android.os.Parcel.readParcelableCreator(Parcel.java:2305) at android.os.Parcel.readParcelable(Parcel.java:2255) at android.os.Parcel.readValue(Parcel.java:2162) at android.os.Parcel.readArrayMapInternal(Parcel.java:2495) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.getIntArray(BaseBundle.java:1164) at android.appwidget.AppWidgetProvider.onReceive(AppWidgetProvider.java:64) at com.yocto.wenote.widget.CalendarAppWidgetProvider.onReceive(CalendarAppWidgetProvider.java:234)

Me siento raro porque mi aplicación nunca tiene uso/acceso a la clase id.dana.model.CurrencyAmountModel . No tengo ni idea de dónde viene la clase id.dana.model.CurrencyAmountModel .

Parece que una aplicación de terceros puede "inyectar" datos en mi AppWidgetProvider .

Mi AppWidgetProvider se define de la siguiente manera.

 <receiver android:name="com.yocto.wenote.widget.CalendarAppWidgetProvider" android:label="@string/widget_calendar_name" android:exported="true" > <intent-filter > <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/calendar_widget_info" /> </receiver> public class CalendarAppWidgetProvider extends AppWidgetProvider { @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); ... super.onReceive(context, intent); } }

¿Tiene alguna idea de por qué mi AppWidgetProvider recibe un id.dana.model.CurrencyAmountModel de datos desconocidos y cómo puedo evitarlo?

Gracias.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

¿Parece que una aplicación de terceros puede "inyectar" datos en mi AppWidgetProvider?

Por supuesto. Cualquier otra aplicación puede acceder públicamente a su AppWidgetProvider . Cualquier aplicación puede enviarle una transmisión que recogerá.

¿Tiene alguna idea de por qué mi AppWidgetProvider está recibiendo un id.dana.model.CurrencyAmountModel de datos desconocidos?

Algunas aplicaciones envían una transmisión con un modelo de cantidad de CurrencyAmountModel como extra. Según el seguimiento de la pila y la implementación de AppWidgetProvider , supongo que este valor no válido está bajo la clave AppWidgetManager.EXTRA_APPWIDGET_IDS . Con suerte, esto es un error en la otra aplicación y no algo malicioso.

¿Cómo puedo evitar eso?

AFAIK, se debe exportar un AppWidgetProvider para que funcione. Podría ejecutar un experimento y ver si android:exported="false" todavía le brinda un widget de aplicación que funciona, pero me sorprendería.

Si eso falla, puede envolver super.onReceive() en un bloque try / catch para evitar el bloqueo. Dada la implementación de AppWidgetProvider , si se invoca su bloque catch , probablemente su proveedor no fue llamado con ninguna de las devoluciones de llamada estándar (por ejemplo, onUpdate() ). Podría agregar algunos registros para tratar de tener una idea de si los usuarios afectados reciben buenas llamadas de super.onReceive() :

  • Si lo hacen, es probable que el widget de la aplicación esté funcionando con normalidad aparte de estas transmisiones deshonestas, por lo que podría descartar las fallas como una simple molestia.

  • Si siempre se ven afectados, es posible que deba intentar llamar a onUpdate() usted mismo de vez en cuando

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!