检测Android中何时关闭漫游
我创建了一个检测Android中何时关闭漫游,android,broadcastreceiver,roaming,Android,Broadcastreceiver,Roaming,我创建了一个BroadcastReceiver,用于侦听CONNECTIVITY\u CHANGE事件。现在,我只需打印调用BroadcastReceiver及其附加程序的Intent操作。我在马尼拉的办公室使用一部测试电话,SIM卡来自丹麦。调用onReceive()时,将在LogCat中打印出以下内容: action: android.net.conn.CONNECTIVITY_CHANGE key: extraInfo, value: data.tre.dk key: htcCurrent
BroadcastReceiver
,用于侦听CONNECTIVITY\u CHANGE
事件。现在,我只需打印调用BroadcastReceiver
及其附加程序的Intent
操作。我在马尼拉的办公室使用一部测试电话,SIM卡来自丹麦。调用onReceive()
时,将在LogCat中打印出以下内容:
action: android.net.conn.CONNECTIVITY_CHANGE
key: extraInfo, value: data.tre.dk
key: htcCurrentActiveNetwork, value: null
key: networkInfo, value: null
key: reason, value: roamingOn
key: noConnectivity, value: null
key: inetCondition, value: null
我需要知道当漫游停止时,reason
的价值是什么——猜测可能是roamingOff
,但我不能确定,除非我去丹麦。这是因为我需要在漫游服务关闭时执行一项任务,我从LogCat中注意到,CONNECTIVITY\u CHANGE
事件是由于切换漫游模式以外的原因触发的。或者有没有更好的方法来检测何时关闭漫游
广播接收器的代码:
舱单条目:
您可以简单地使用这一行来检测漫游状态:
Settings.Secure.getInt(getContentResolver(), Settings.Secure.DATA_ROAMING)
这不需要任何特殊权限或接收者
网络漫游和数据漫游是有区别的 一般来说,网络漫游允许您的电信公司在您出国时通过第三方卫星,这样您就可以与他们的服务保持连接。即使您已经告诉您的电信公司您想订阅网络漫游,它也不会被激活,直到您真正开始通过第三方电信卫星连接,而这只会在您实际出国时发生 数据漫游只是允许/禁止您的设备在网络漫游模式下使用移动数据。它更依赖于设备,您可以在手机的设置应用程序中轻松地打开或关闭它 简而言之,如果要检测网络漫游,请使用
TelephonyManager.isNetworkRoaming()
。如果要检查是否打开或关闭数据漫游,请使用Settings.Secure.getInt(getContentResolver(),Settings.Secure.data\u roaming)
重要提示:我尚未亲自测试以下场景,我不确定isNetworkRoaming()
将返回什么值
isNetworkRoaming()
将在此处返回什么值,因为您最初没有订阅网络漫游我刚刚将该行的结果与
TelephonyManager.isNetworkRoaming()
的结果一起记录了下来。我发现Settings.Secure.DATA\u ROAMING
可能返回0
(意思是数据漫游已关闭),而isNetworkRoaming()
为true
。我猜这是因为电信公司仍处于网络漫游模式,但我不允许我的设备使用移动互联网。它们似乎是不同的交换机,我想要的是网络漫游模式。你想知道什么?我假设TelephonyManager.isNetworkRoaming()
显示您处于漫游状态,设置显示您是否可以在漫游中使用internet我正在使用网络漫游模式,因为我正在尝试测量用户的下一个月账单,这不仅包括通过数据漫游发送/接收的移动数据量。确定,使用TelephonyManager.isNetworkRoaming()
检测用户是否处于漫游状态。
<receiver android:name=".listener.RoamingListener">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Settings.Secure.getInt(getContentResolver(), Settings.Secure.DATA_ROAMING)