【问题标题】:Mi Devices blocking Internet access when application is in background当应用程序在后台时,小米设备阻止互联网访问
【发布时间】:2017-11-05 22:25:06
【问题描述】:

我想检查设备是否连接到互联网。下面是我的代码sn-p:

public boolean isConnectedToInterNet() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}

上述函数在后台服务返回 false(即使连接到 wifi/4g 数据),当应用在前台时返回 true。

activeNetworkInfo 对象返回以下信息:

NetworkInfo: type: WIFI[], state: DISCONNECTED/BLOCKED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false, simId: 0

问题是 Redmi 设备特有的。

我也启用了自动启动,并且 isConnectedToInterNet() 方法对所有其他设备返回 true。

我在下面看到了所有其他的 cmets,但问题没有解决

【问题讨论】:

  • 请检查此线程可能会有所帮助。 stackoverflow.com/questions/9570237/…
  • 我签入了 mi Note 4,但它工作正常。清理代码后请再次检查。
  • 嗨@KailasBhakade 当我清除任务管理器后,所有进程都在允许自动启动后停止,我的进程开始启动,之后它为后台任务返回 false。谢谢。
  • 我在尝试在 JobService 中检查时遇到了同样的问题。这真的是MIUI问题吗?你找到任何解决方法了吗?只有连接检查失败还是 MIUI 会阻止互联网访问?
  • @vizsatiz 我没有找到任何解决方案。 MIUI 阻止了互联网访问

标签: android


【解决方案1】:

它的 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);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多