我正在尝试从IBinder
获取Service
,以便在收到系统通知时我可以与服务进行通信。从我的onReceive()
方法我调用peekService()
,但我得到一个空引用。
我在Dianne和Mark看到了https://groups.google.com/forum/#!topic/android-developers/yiq_XIzFoS4的一些答案,他们建议使用startService
,但我的服务有一个界面,我认为peekService
应该可行,但它不会
我是否需要权限才能从BroadcastReceiver
查看服务?我需要别的东西吗?我确定服务正在运行,但我无法从中获取绑定。
答案 0 :(得分:2)
如果通信是BroadcastReceiver - >服务...然后你将使用startService(),通过将数据添加到Intent的Bundle来传递数据。
我怀疑您的BroadcastReceiver需要向服务(或其IBinder)询问一个问题。在这种情况下,您使用peekService。与peekService擦除的是,如果服务未启动并绑定到它,则返回null。
答案是在收到广播之前确保服务已启动并已受到约束。您如何实现这一点将取决于您的具体应用程序。
如果您正在偷看的服务是您的应用程序的一部分(相同的APK),那么您不需要特殊权限。