android - 有没有办法在android的 native 代码中获取手机的数据连接状态?

标签 android android-ndk native

有没有办法在 Android 的 native 代码中获取手机的数据连接状态?我知道我们可以使用 Java 中的 ConnectivityManager 来完成。

Android 的本地代码中是否有类似的东西?当他们从 Gingerbread 开始支持本地 Activity 时,他们是否也为连接管理器提供了支持。

有知道的请告诉我。我试过了,但我在本地没有得到任何类似的东西。到目前为止,我唯一的想法是在 JAVA 中使用连接管理器实现一个类,并从 native 调用这些函数。

感谢和问候,
S苏曼185

最佳答案

检查一下:

设置你的监听器:

    private static class MyPhoneStateListener extends PhoneStateListener{ 
    @Override 
    public void onSignalStrengthsChanged(SignalStrength signalStrength){ /* Do Stuff */
        }
        catch(Exception ex)
        {
        }
    } 

    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
      switch (state) {
      case TelephonyManager.CALL_STATE_IDLE:
        stateString = "Idle";
        break;
      case TelephonyManager.CALL_STATE_OFFHOOK:
        stateString = "Off Hook";
        break;
      case TelephonyManager.CALL_STATE_RINGING:
        stateString = "Ringing " + incomingNumber;
        break;
      }
    }

    @Override 
    public void onCellLocationChanged(CellLocation location) { 
        try
        {
             super.onCellLocationChanged(location); 
        }
        catch(Exception ex)
        { }
    } 

};

然后你必须注册监听器:

public static void Init_DataRelatedStuff(Context ForeignContext)
{
    foreignContext = ForeignContext;
    m_psl = new MyPhoneStateListener();
    m_telephonyManager = (TelephonyManager)foreignContext.getSystemService(Context.TELEPHONY_SERVICE);
    m_telephonyManager.listen(m_psl, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
    m_telephonyManager.listen(m_psl, PhoneStateListener.LISTEN_CELL_LOCATION);
    m_telephonyManager.listen(m_psl, PhoneStateListener.LISTEN_CALL_STATE);
}

那么现在你可以获取数据状态了:

    public static String getDataState()
{
    int nType = m_telephonyManager.getDataState();
    String value = "UNKNOWN";
    switch(nType)
    {
    case 0://DATA_DISCONNECTED
        value = "DISCONNECTED";
        break;
    case 1://DATA_CONNECTING
        value = "CONNECTING";
        break;
    case 2://DATA_CONNECTED
        value = "CONNECTED";
        break;
    case 3://DATA_SUSPENDED
        value = "SUSPENDED";
        break;
    default:
        value = "UNKNOWN";
        break;
    }
    return value;
}

您还需要 list 中的许可:

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

关于android - 有没有办法在android的 native 代码中获取手机的数据连接状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8801636/

相关文章:

android - 如何在 Android 上管理 startActivityForResult

android - Android中的原生库加载断点

Android GCC 编译器更改

c++ - 是否可以使用 C++ 标准 native 库创建 GUI 应用程序?

java.security.UnrecoverableKeyException : Failed to obtain information about private key

android - 包含布局内的 layout_below 项

android - 不工作-在带有平板电脑 HUAWEI MediaPad M5 的 Android Studio 上 Debug模式 native 代码 (c/c++)

java - 从 Java 调用 C++ 函数。映射 "const char*"

Android 4.4 进度对话框的全屏模式

Android-NDK "java.lang.UnsatisfiedLinkError"