Android增加了一种新的网络类型,NETWORK_TYPE_NR for 5G,这是Android所没有的。最近发布的三星S10完全支持5G。当它在5G网络上时,它可以在状态栏上显示5G图标。
第三方应用程序是否有可能知道5G网络上的Android设备是否存在?
任何帮助都将不胜感激。
下面的链接是新网络类型的定义。它在Android分支上是不可用的。
发布于 2019-05-03 18:08:21
我相信他们支持从Q到Pie的代码,因为5G的逻辑是在去年年底在Q (alpha)中实现的。所以当使用TelephonyManager.getNetworkType()时
你可能会得到
20 (5G)
编辑
如下所示:网络类型将是13,因此它不能解决问题。
编辑
尝试使用反射
static boolean isNRConnected(TelephonyManager telephonyManager) {
try {
Object obj = Class.forName(telephonyManager.getClass().getName())
.getDeclaredMethod("getServiceState", new Class[0]).invoke(telephonyManager, new Object[0]);
Method[] methods = Class.forName(obj.getClass().getName()).getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equals("getNrStatus") || method.getName().equals("getNrState")) {
method.setAccessible(true);
return ((Integer) method.invoke(obj, new Object[0])).intValue() == 3;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}发布于 2020-09-20 03:23:46
在Android 11. https://developer.android.com/about/versions/11/features/5g#detection上有一个检测5G的官方文档。
调用TelephonyManager.listen(),传入LISTEN_DISPLAY_INFO_CHANGED,以确定用户是否有5G网络连接。
发布于 2020-11-02 08:09:45
正如@Hunter建议的那样,您需要使用来自电话管理器的“侦听”,但是如果它是api 30+,则需要授予READ_PHONE权限并侦听LISTEN_DISPLAY_INFO_CHANGED,并从PhoneStateListener重写onDisplayInfoChanged
(context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager).listen(customPhoneStateListener,PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED)侦听器应该如下所示:
private class CustomPhoneStateListener : PhoneStateListener() {
override fun onDisplayInfoChanged(telephonyDisplayInfo: TelephonyDisplayInfo) {
super.onDisplayInfoChanged(telephonyDisplayInfo)
when (telephonyDisplayInfo.overrideNetworkType) {
//5G
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO,
OVERRIDE_NETWORK_TYPE_NR_NSA,
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE -> setNetworkChange(NETWORK_TYPE_NR)
OVERRIDE_NETWORK_TYPE_LTE_CA -> {
setNetworkChange(19) //LTE+
}
else -> setNetworkChange(telephonyDisplayInfo.networkType)
}
} else {
setNetworkChange(telephonyDisplayInfo.networkType)
}
}
}链接:https://developer.android.com/about/versions/11/features/5g#detection
https://stackoverflow.com/questions/55598359
复制相似问题