如何获取ServiceState的实例?

God*_*hen 4 android

我正在尝试获取ServiceState我的实例Activity.但是我该怎么做呢?没有静态方法可以在任何返回ServiceState实例的服务上获取实例或任何方法.
TelephonyManager.listen()电话.但我希望ServiceState在我想要的时候获取实例,而不是在Android调用我的监听器时因为某些内容发生了变化.

文档ServiceState可以在这里找到:http://developer.android.com/reference/android/telephony/ServiceState.html

小智 6

您想从ServiceState哪种信息中获取?如果您只想获得当前注册的运算符,可以通过调用方法getNetworkOperatorName()来实现TelephonyManager.但是如果你想获得手机的服务状态,你需要PhoneStateListener用重写onServiceStateChanged方法来实现.然后做这个:

telephonyManager.listen(yourListener, PhoneStateListener.LISTEN_SERVICE_STATE);
Run Code Online (Sandbox Code Playgroud)

当你打电话时telephonyManager.listen,会调用onServiceStateChanged方法,此时你会得到手机的当前服务状态.


Ric*_*ick 3

我想我并没有真正理解你的问题,因为据我所知,自从 API 级别 1 以来,ServiceState 上就有一个公共的空构造函数。因此,如果您想要它的实例,您所要做的就是:

ServiceState serviceState = new ServiceState();
Run Code Online (Sandbox Code Playgroud)

编辑: 现在我了解了您的情况,我唯一能想到的是,在您注册 PhoneStateListener 后,您将获得 PhoneState 的更新(它可能实际上没有更改,但会触发一个事件来让您知道当前值我猜)。因此,我能想到的唯一解决方法是,当您想知道当前值时继续注册phoneStateListener,并在不再需要它时取消注册它。

希望有帮助