繁体   English   中英

Android服务+ BroadcastReceiver,PhoneStateListener

[英]Android Service + BroadcastReceiver, PhoneStateListener

我正在使用非常简单的GUI开发电话应用程序,该GUI可启动在后台运行的服务。

该服务将负责在本地数据库上记录数据。 据报道,这些数据将与Android API允许我获得的用户操作有关。

这与用户接受/拒绝呼叫,谁,电话是否处于静音状态,用户的位置以及类似情况有所不同。

另一件事可能是用户将手机充电,关闭屏幕,访问应用程序,听音乐,使用相机等。

我对他们使用的数据不感兴趣,但对他们正在执行的操作不感兴趣。

我发现了几个相关的类,一个是BroadcastReceiver,另一个是PhoneStateListener,但是我无法在我的服务中使用它们。

我有一个类(RecordEvents),它扩展了BraodcastReceiver并通过检查传入的不同动作(intent.getAction())来实现onReceive方法。如果这是我感兴趣的动作之一,则使用Log.i()对其进行记录。

现在,在我的服务(BackgroundService类)中,可以确认它是否成功运行,我实例化RecordEvents,并在onCreate方法中调用registerReceiver(recordEvents,filter)recordEvents是RecordEvents的一个实例,而filter是一个具有所有意图操作的IntentFilter。很感兴趣。

现在,如果我在模拟器/电话上执行我感兴趣的任何操作,则日志猫上不会显示任何打印消息。

我做错了什么吗?

BroadcastReceiver是否适合在后台将用户动作记录在数据库中时使用的正确类?

我还在使用另一个类(PhoneEvents),该类扩展了PhoneStateListener,重写了onCellLocationChanged,onDataActivity,onCallStateChanged,并且该类已实例化,并由TelephonyManager.listen(phoneEvents,PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_DATA_ACTIVITY | PhoneStateListener.LISTEN_CALL_STATE;

像那样。

当我在设备上安装应用程序时,仍然没有任何日志。

谢谢您的答复。

谢谢,安德里亚斯

我不确定,但是为什么使用动态注册而不是静态注册? 只需在清单中注册接收者并绑定到onReceive()的服务即可。 可能会解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM