oggetto personalizzato Parcelable passato al nucleo
-
28-09-2019 - |
Domanda
Voglio inviare un messaggio broadcast con l'intenzione all'interno di dati aggiuntivi del mio tipo personalizzato che implementa Parcelable.
Nel dettaglio: Voglio creare un collegamento sul HS
Tuttavia il sistema non accetta oggetto della mia misura Tipo di comando, il messaggio di errore: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.solvek.ussdfaster.entities.Command
Questo oggetto verrà passato di nuovo alla mia applicazione quando l'utente fa clic sul collegamento.
Intent shortcutIntent = new Intent(this, FormActivity.class);
shortcutIntent.putExtra("command", command); // Note - commmand is my custom object
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, command.getTitle());
Parcelable iconResource = Intent
.ShortcutIconResource
.fromContext(this, R.drawable.ic_launcher);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(intent);
Soluzione
Per la classe di comando ho implementato serializzazione XML (utilizzando xstream) e serializzato oggetto Command di String come XML e quindi passato al nucleo. Non perfetta soluzione, ma funziona per il momento.