'欺骗'意图的额外内容

时间:2012-02-02 08:38:40

标签: java android android-intent

我想制作一个应用程序,作为第三方应用程序的便捷入口点,使用我的参数启动其中一项活动,而不是点击它来执行相同操作。我对第三方应用程序有所了解:我需要一个Intent,其中包含一个.putExtra,一个已知字符串,一个由app定义的Payload类实例,定义其中我知道

我的问题:如何将自己的意图发送给将被接受为应用程序自己Payload的对象?即,如果它被定义为(简洁表达)

public class Payload implements Serializable {
    private String url;
    Payload(String url) { this.url = url; }
    public String getUrl() { return url; }
}

我可以定义自己的

public class NotPayload implements Serializable {
  private String x;
  Payload(String x) { this.x = x; }
}

在我自己的应用程序中,发送意图?还有更多参与吗?

对于警惕,对我的目标没有任何远程恶意。我只是想补充一个应用程序,并计划与开发人员分享结果(好的,主观是“你想添加这个功能吗?”)

2 个答案:

答案 0 :(得分:0)

不,这不起作用。

您可以使用班级将数据存储在您身边。 Intent代码将您的对象序列化为字节数据。第三方应用程序内的代码将尝试将数据反序列化为对象。这将失败。可序列化数据只能反序列化到同一个类中。

按原样复制原始类的定义,而不更改类名或包。

答案 1 :(得分:0)

然而 更多涉及:必须导出目标活动 - 使用andoid:export="true"显式导出,或者使用intent-filter隐式导出目标活动。你不能将Intent发送到任何app的任何随机组件:你会得到一个安全例外。