正确的方式导出意图行动

时间:2014-07-24 10:30:52

标签: android android-intent

是否有适当的方式公开描述/声明其他人的广播意图?

例如,我有一个应用程序,可以在意图的帮助下广播信息。另一个应用程序想要在广播接收器中使用这些意图。其他应用程序如何知道意图提供了什么?

我现在正在研究如何使用其动作名称,额外内容公开记录意图。我有类似Eclipse扩展点描述的东西。有什么建议吗?


补充阅读:Things that cannot change

1 个答案:

答案 0 :(得分:1)

只需在某处定义所需的常量,例如在处理这些常量的ServiceBroadcastReceiver中,如果需要,可以编写java doc来描述每个字段:

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()用于为所有常量添加前缀。这确保了(很有可能)这些常量具有唯一的String值。如果您的库或框架被第三方应用程序使用,那么这些值是唯一的非常重要。

正在使用您的图书馆的人可以毫无问题地构建Intents

Intent intent = new Intent(context, SomeService.class);
intent.setAction(SomeService.ACTION_NOTIFICATION);
intent.putExtra(SomeService.EXTRA_REMINDER_ID, reminder.getId());
startService(intent);

除此之外,我不担心。如果人们想要与您的应用程序/库/他们只需要知道如何进行交互。你可以通过定义上面的常量来简化编码本身,减少痛苦,但是其他开发人员仍然必须知道他在做什么,所以他/她会查看指南或教程(最好是你提供的东西)来学习什么他/她需要知道。

如果需要,您还可以在一个Java文件中定义所有这些常量,并为此提供单独的下载链接。