智能扩展SDK的SampleNotificationExtension已经提供给了一些例子:
在示例扩展中,有一项服务每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提要中提供的内容之间的差异。
很好,很长的答案,希望它有帮助!
我使用了SampleNotificationExtension作为我的扩展的基础,这非常棒(谢谢你将这么多示例放在那里)。如果用户禁用分机,即使手表仍与手机连接,我也想停止该服务(取消闹钟)。我可以用SampleNotificationExtension重现相同的行为。有没有办法知道扩展是否激活? – galex
不幸的是,扩展名无法读取所有扩展的主要首选项屏幕中的激活/关闭设置。它在SmartWatch主机应用程序中存储和维护。我的回答中提到的“isActive”首选项是SampleNotificationExtension的本地特性。所以,基本上,你不知道用户是否已经停用了你的扩展。对不起,应该从一开始就告诉过这个。 – Jerker
这是否可以在未来的SDK版本中发送,作为发送到扩展接收器的意图? – galex