4

我有一个 android 应用程序(除其他外)在 Android Wear 设备上显示通知。

这是通过让 Wear 模块中的一个类扩展 WearableListenerService 来完成的。在 Wear 模块中,我还有一个扩展 BroadcastReceiver 的类。

这里的场景是: - 从 Android Studio 运行应用程序 - 使用手机应用程序,以便在 Wear 设备上显示通知 - 重新启动 Wear 设备

现在我想要的是,如果我让手机显示另一个通知,它应该出现在可穿戴设备上。事实并非如此,因为 WearableListenerService 没有启动……

所以我让 BroadcastManager 监听 ACTION_BOOT_COMPLETED 事件:

@Override
public void onReceive(Context context, final Intent intent) {
    Log.d(TAG, "onReceive!");
    if(intent==null)
        return;

    if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
        Log.d(TAG, "Action boot completed");
        ComponentName c = context.startService(new Intent(context, OngoingNotificationListenerService.class));
        Log.d(TAG, "returned " + c);
        return;
    }
    .
    .
    .

在我的清单文件中:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
.
.
.
<receiver android:name=".ActionsReceiver" android:enabled="true" android:exported="false">
        <intent-filter>
            <action android:name="com.XX.receiver.action_pause" />
            <action android:name="com.XX.receiver.action_resume" />
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
</receiver>

现在的问题是我的应用程序没有收到 BOOT_COMPLETED 操作。我检查了日志,发现手表上的其他侦听器在重启后收到了这个事件,但不是我的。

我看过几篇关于此的帖子,例如 关闭应用程序时未收到 Android BOOT_COMPLETED

我认为这可能与我的问题非常相似。

我的 android wear 应用程序没有用户可以启动的“mainactivity”——它只有监听器服务和接收器。虽然,我很快实现了一个带有启动器意图的主要活动,这样我就可以从手表上的启动器启动应用程序。这根本不影响局势。一旦手表重新启动,它不会显示来自我的应用程序的通知,直到我从 android studio 重新安装它。

所以我错过了一些重要的事情吗?当手表重新启动时,我的 WearableListenerService 是否应该在没有我交互的情况下自行启动?(它没有......)或者它与这是应用程序的开发者版本有什么关系?

(注意:我也尝试过关闭然后启动 - 没有区别)

4

2 回答 2

0

您需要将您的服务添加到您的穿戴模块的清单中,并向其中添加BIND_LISTENER DATA_CHANGED 操作:

要监听 /prefix 路径上的数据项和消息,新语法如下所示(根据android 工具站点):

<service android:name=".ExampleWearableListenerService">
    <intent-filter>
        <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
        <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
        <data android:scheme="wear" android:host="*" android:pathPrefix="/prefix" />
    </intent-filter>
</service>
于 2015-03-11T09:43:20.287 回答
0

尝试添加<category android:name="android.intent.category.DEFAULT" />为你的孩子<intent-filter>

于 2014-11-12T16:29:33.650 回答