2016-07-26 2 views
1

Я хочу создать ярлык рабочего стола для внутреннего действия моего приложения. This Ответ помог мне начать.Android: ярлык Homescreen с Serializable Extra

Вот основной код:

Intent shortcutIntent = new Intent(context.getApplicationContext(), 
     StationMainActivity.class); 
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
shortcutIntent.setAction(Intent.ACTION_MAIN); 

Intent addIntent = new Intent(); 
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, stationData.getName()); 
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, 
     Intent.ShortcutIconResource.fromContext(context.getApplicationContext(), 
       R.drawable.ic_launcher)); 

addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
addIntent.putExtra("duplicate", false); 
context.getApplicationContext().sendBroadcast(addIntent); 

К сожалению, в то время как она работает, чтобы обеспечить дополнительную строчной тип код появляется сбой при попытке обеспечить сериализации дополнительным к shortcutIntent.

shortcutIntent.putExtra("StationId", (String) stationData.getId()); 

. Произведение. Но

shortcutIntent.putExtra("StationData", stationData); 

, где stationData - это сериализуемый объект, нет. Поэтому прямо сейчас я предоставляю все поля объекта как строку и воссоздаю объект при вызове операции. Это работает, но это громоздкий и грязный код.

Любая идея, почему предоставление сериализуемого объекта в этом случае не работает? Благодарю.

Update: Вот как я пытаюсь извлечь Serializeable:

stationData = (StationData) intent.getSerializableExtra("StationData"); 

StationData выглядит следующим образом:

public class StationData implements Serializable { 
    private String id; 
    private String name; 
    ... 

    public StationData(String id, String name, ....) { 
     this.id = id; 
     this.name = name; 
     ... 
    } 
} 
+0

Является ли ваша stationData расширяемой от сериализуемой? также можете ли вы предоставить код о том, как вы получаете дополнительные услуги? – PedroAGSantos

+0

Да, это так. Сериализация хорошо работает, если она не используется для назначения ярлыков. – Androidicus

+0

Можете ли вы предоставить код при получении сериализации? – PedroAGSantos

ответ

0

при попытке получить данные пытаются использовать:

Bundle extras = getIntent().getExtras(); 
extras.getSerializable("StationData"); 
Смежные вопросы