Android 出口意向行动的正确方式
是否有适当的方式为他人公开描述/声明广播意图 例如,我有一个应用程序,它通过意图来广播信息。另一个应用程序希望在广播接收器中使用这些意图。其他应用程序如何知道意图提供了什么 我现在正在考虑如何公开记录其行动名称extras的意图。我想到了类似Eclipse扩展点的描述。有什么建议吗Android 出口意向行动的正确方式,android,android-intent,Android,Android Intent,是否有适当的方式为他人公开描述/声明广播意图 例如,我有一个应用程序,它通过意图来广播信息。另一个应用程序希望在广播接收器中使用这些意图。其他应用程序如何知道意图提供了什么 我现在正在考虑如何公开记录其行动名称extras的意图。我想到了类似Eclipse扩展点的描述。有什么建议吗 附加阅读:只需在某个地方定义所需的常量,例如在处理这些常量的服务或广播接收器中,如果需要,可以编写java文档来描述每个字段: public class SomeService extends IntentServ
附加阅读:只需在某个地方定义所需的常量,例如在处理这些常量的
服务
或广播接收器
中,如果需要,可以编写java文档来描述每个字段:
public class SomeService extends IntentService {
/**
* Used to tell the {@link com.example.SomeService} to display a notification
*/
public static final String ACTION_NOTIFICATION = NotificationService.class.getName() + "_ACTION_NOTIFICATION";
/**
* An Intent extra for the id of a reminder. Used by {@link at.medmedia.copaxone.service.NotificationService#ACTION_NOTIFICATION}
*/
public static final String EXTRA_REMINDER_ID = NotificationService.class.getName() + "EXTRA_REMINDER_ID";
...
}
SomeService.class.getName()
用于为所有常量添加前缀。这可以确保(很有可能)这些常量具有唯一的字符串值。如果第三方应用程序使用您的库或框架,则这些值是唯一的,这一点非常重要
然后,使用您的库的用户可以毫无问题地构建意图
:
Intent intent = new Intent(context, SomeService.class);
intent.setAction(SomeService.ACTION_NOTIFICATION);
intent.putExtra(SomeService.EXTRA_REMINDER_ID, reminder.getId());
startService(intent);
除此之外,我不担心这件事。如果人们想与你的应用程序/库/任何他们需要知道的东西交互。通过定义上述常量,您可以使编码本身变得简单和不那么痛苦,但是其他开发人员仍然需要知道他/她正在做什么,因此他/她将查看指南或教程(最好是您提供的内容),以了解他/她需要知道的内容
如果需要,还可以在一个Java文件中定义所有这些常量,并为此提供一个单独的下载链接。我现在就是这样做的。以这种方式,我必须有一个对广播项目的编译时引用,或者使用纯字符串。两者都不是那么好。但似乎唯一的选择是接收客户端必须确保正确的意图过滤器和额外内容的解析(在广播项目更新的情况下)。是的,第三方应用程序的开发人员有责任确保其正确。只是要确保你把所有的事情都记录好了。你的问题解决了还是需要进一步的帮助?对于我的回答,还有什么可以补充的吗?@XaverKapeller嗯,我只是希望对这个话题有其他的看法。即使在多项目构建中维护操作/额外的名称也是一件痛苦的事情……但似乎我无能为力。。。