代码之家  ›  专栏  ›  技术社区  ›  Goddchen

如何获取ServiceState实例?

  •  4
  • Goddchen  · 技术社区  · 15 年前

    我想找一个 ServiceState 在我的 Activity . 但我该怎么做呢?没有静态方法可以获取实例或返回 服务状态
    这就是 TelephonyManager.listen() 当我需要的时候,而不是当Android调用我的监听器时,因为发生了一些变化。

    文件 服务状态 http://developer.android.com/reference/android/telephony/ServiceState.html

    6 回复  |  直到 13 年前
        1
  •  3
  •   Rick    14 年前

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

    ServiceState serviceState = new ServiceState();
    

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

    希望有帮助

        2
  •  6
  •   Volo    13 年前

    ServiceState ? 如果只想获取当前注册的运算符,可以通过调用方法来实现 getNetworkOperatorName() 在里面 TelephonyManager . 但是如果你想得到手机的服务状态,你需要实现 PhoneStateListener 已覆盖 onServiceStateChanged 方法。然后做这个:

    telephonyManager.listen(yourListener, PhoneStateListener.LISTEN_SERVICE_STATE);
    

    telephonyManager.listen ,那么 OnServiceState已更改

        3
  •  3
  •   Volo    13 年前

    我还没有尝试过这个,但我将不得不这样做,因为这种功能是我的应用程序的关键。我会告诉你事情的进展,但有个想法:

    TelephonyManager ):

    public void listen (PhoneStateListener listener, int events)

    要注册侦听器,请传递PhoneStateListener并在events参数中指定至少一个感兴趣的电话状态。 并传递当前(udpated)值。

    您只需注册一个侦听器并保留它,然后在每次更改时让回调函数保存活动中报告的状态,这样您的应用程序就可以在每次需要检查时引用活动字段。或者,您可以在每次需要状态度量时注册并抛出侦听器,但我认为这将比只保持一个侦听器打开浪费更多的系统资源。

        4
  •  1
  •   Macarse    15 年前

    有些电话对开发人员不可用。句号。

    如果你想要这种信息,你会有一个 PhoneStateListener example .

        5
  •  1
  •   Omid Omidi    11 年前

    使用此选项:

    private PhoneStateListener mPhoneListener = new PhoneStateListener() {
        @Override
        public void onServiceStateChanged(ServiceState serviceState) {
            Log.d(TAG, "Phone State: " + serviceState.getState());
            phone_state = serviceState.getState();
            super.onServiceStateChanged(serviceState);
        }
    };
    

    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    tm.listen(mPhoneListener, PhoneStateListener.LISTEN_SERVICE_STATE);
    
        6
  •  1
  •   noam    8 年前

    在Android 8中,您有以下功能:

    tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    tm.getServiceState();
    

    别忘了添加权限:

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />