我想制作一个应用程序,作为第三方应用程序的便捷入口点,使用我的参数启动其中一项活动,而不是点击它来执行相同操作。我对第三方应用程序有所了解:我需要一个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; }
}
在我自己的应用程序中,发送意图?还有更多参与吗?
对于警惕,对我的目标没有任何远程恶意。我只是想补充一个应用程序,并计划与开发人员分享结果(好的,主观是“你想添加这个功能吗?”)
答案 0 :(得分:0)
不,这不起作用。
您可以使用班级将数据存储在您身边。 Intent代码将您的对象序列化为字节数据。第三方应用程序内的代码将尝试将数据反序列化为对象。这将失败。可序列化数据只能反序列化到同一个类中。
按原样复制原始类的定义,而不更改类名或包。
答案 1 :(得分:0)
然而 更多涉及:必须导出目标活动 - 使用andoid:export="true"
显式导出,或者使用intent-filter隐式导出目标活动。你不能将Intent发送到任何app的任何随机组件:你会得到一个安全例外。