2012-05-09 27 views
2

我正在使用Notification API开发RSS智能扩展应用程序。 我想知道如何获取智能扩展的活动/非活动状态(在SmartWatch应用程序中单击我的RSS智能扩展时的第一个复选框)。如何知道我的Android SmartWatch扩展程序是否处于非活动状态?

NotificationAPI示例使用额外的复选框首选项来启动或不启动服务下载数据生成通知,但我不想强制用户进入子菜单并激活数据下载。如果用户激活了我的RSS智能扩展程序,他已经期望扩展程序在RSS中有一些新项目时通知他。

当我的智能扩展程序正确添加到liveware/smartwatch应用程序(onRegisterResult)时有一个回调,但我没有找到回调来知道智能扩展程序是否实际处于活动状态。

在此先感谢!

回答

5

智能扩展SDK的SampleNotificationExtension已经提供给了一些例子:

  • 如何添加/更新/删除/从驻留在活件管理器应用程序的通知数据库中读取数据到/ (它是智能扩展API的集线器)通过内容提供商

  • 如何响应用户在智能手表上打开通知的事件,例如按下动作按钮

在示例扩展中,有一项服务每10秒钟向Notification数据库提供一次,然后在SmartWatch设备上显示该服务。首选项活动中的开/关设置仅用于启动和停止提供数据库的循环。

好的。

所以我想你想订阅RSS源,当新帖子到达时,你希望他们传播到智能手表。您可能需要开始一项服务,如示例中所示,并且只要手表连接到手机,您可能应该已开始运行该服务。您可以在此指定:

@Override 
protected boolean keepRunningWhenConnected() { 
    return true; 
} 

如果使用SmartExtension实用程序类,您的扩展程序将自动注册并启动服务。在示例扩展中,扩展注册后,会进行检查以查看用户是否已通过首选项激活了扩展。

@Override 
public void onRegisterResult(boolean result) { 
    /.../ 
    boolean isActive = prefs.getBoolean(
      getString(R.string.preference_key_is_active), false); 
    if (isActive) { 
     startAddData(); 
    } 
} 

如果需要,您可以保留此选项,但这不是必需的。如前所述,它只是用于启动和停止数据馈送。无论如何,你可以在注册后开始RSS检查。

如果用户激活我的RSS智能扩展,他已经期望扩展通知他,如果有一些新的项目到RSS中。

服务启动时,您可以检查通知数据库中的内容与RSS提要中提供的内容之间的差异。

很好,很长的答案,希望它有帮助!

+0

我使用了SampleNotificationExtension作为我的扩展的基础,这非常棒(谢谢你将这么多示例放在那里)。如果用户禁用分机,即使手表仍与手机连接,我也想停止该服务(取消闹钟)。我可以用SampleNotificationExtension重现相同的行为。有没有办法知道扩展是否激活? – galex

+1

不幸的是,扩展名无法读取所有扩展的主要首选项屏幕中的激活/关闭设置。它在SmartWatch主机应用程序中存储和维护。我的回答中提到的“isActive”首选项是SampleNotificationExtension的本地特性。所以,基本上,你不知道用户是否已经停用了你的扩展。对不起,应该从一开始就告诉过这个。 – Jerker

+0

这是否可以在未来的SDK版本中发送,作为发送到扩展接收器的意图? – galex

相关问题