Android:带有可串行化额外功能的主屏幕快捷方式

Android:带有可串行化额外功能的主屏幕快捷方式,android,android-intent,Android,Android Intent,我想创建应用程序内部活动的主屏幕快捷方式。这个答案帮助我开始学习 以下是基本代码: Intent shortcutIntent = new Intent(context.getApplicationContext(), StationMainActivity.class); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLE

我想创建应用程序内部活动的主屏幕快捷方式。这个答案帮助我开始学习

以下是基本代码:

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);
不幸的是,虽然提供额外的String类型确实有效,但如果我尝试向ShortcutionText提供可序列化的额外类型,代码似乎会失败

    shortcutIntent.putExtra("StationId", (String) stationData.getId());
确实有效。但是

    shortcutIntent.putExtra("StationData", stationData);
其中stationData是可序列化对象,而不是。所以现在我将对象的所有字段作为字符串提供,并在调用活动时重新创建对象。这确实有效,但它的代码既麻烦又肮脏

知道为什么在这种情况下提供可序列化对象不起作用吗?谢谢

更新:以下是我如何尝试检索可序列化文件:

    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; 
      ...
    }
 }

当您尝试获取数据时,请尝试使用:

Bundle extras = getIntent().getExtras();
extras.getSerializable("StationData");

当您尝试获取数据时,请尝试使用:

Bundle extras = getIntent().getExtras();
extras.getSerializable("StationData");

您的stationData是否从可序列化扩展?你还可以提供你如何获得额外费用的代码吗?是的。如果不用于快捷方式目的,序列化可以很好地工作。在检索serializable时能否提供代码?ADB中是否有错误或警告?stationData是否从serializable扩展而来?你还可以提供你如何获得额外费用的代码吗?是的。如果序列化不用于快捷方式目的,则可以正常工作。在检索可序列化文件时,是否可以提供代码?ADB中是否有错误或警告?