我想检查设备是否已连接到互联网。下面是我的代码片段:
public boolean isConnectedToInterNet() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}
以上函数在后台服务中返回false(即使连接到wifi / 4g数据),当app在前台时返回true。
activeNetworkInfo对象返回以下信息:
NetworkInfo:type:WIFI [],state:DISCONNECTED / BLOCKED,reason :( unspecified),extra:(none),漫游:false,failover:false,isAvailable:true,isConnectedToProvisioningNetwork:false,simId:0
问题特定于Redmi设备。
我也启用了aouto-start,isConnectedToInterNet()方法为所有其他设备返回true。
我已经看到下面的所有其他评论,但问题没有解决
答案 0 :(得分:0)
它的miui限制,您不能对其抛出代码产生影响,但是您可以重定向用户以更改应用程序的设置。 (我在c#上发布了您的答案,我认为您可以将其翻译为java)
public void CheckBackgroundRestriction()
{
Intent battSaverIntent = new Intent();
battSaverIntent.SetComponent(new ComponentName("com.miui.powerkeeper", "com.miui.powerkeeper.ui.HiddenAppsContainerManagementActivity"));
((AppCompatActivity)_context).StartActivityForResult(battSaverIntent, 4321);
}