Android 广播接收器没有互联网接入

Android 广播接收器没有互联网接入,android,android-broadcastreceiver,android-wake-lock,android-doze,android-doze-and-standby,Android,Android Broadcastreceiver,Android Wake Lock,Android Doze,Android Doze And Standby,我的广播接收器有问题 我已经设置了一个早上6点的闹钟,它必须启动我的广播接收器,它只需要从互联网下载一些数据并进行处理 例如,如果我将闹钟设置为下午3点,它就可以正常工作。但问题是在早上6点,它无法下载,因为它没有网络连接 我在尝试下载之前执行部分唤醒锁定。是否与此有关?手机是否进入深度睡眠状态,部分唤醒锁定是否不够 还能是什么?我已经仔细检查了一下,在启用网络数据的情况下离开手机,而且我确实会在夜间收到电子邮件和whatsapp 有没有办法让android恢复这种连接 欢迎任何提示或帮助 致以

我的广播接收器有问题

我已经设置了一个早上6点的闹钟,它必须启动我的广播接收器,它只需要从互联网下载一些数据并进行处理

例如,如果我将闹钟设置为下午3点,它就可以正常工作。但问题是在早上6点,它无法下载,因为它没有网络连接

我在尝试下载之前执行部分唤醒锁定。是否与此有关?手机是否进入深度睡眠状态,部分唤醒锁定是否不够

还能是什么?我已经仔细检查了一下,在启用网络数据的情况下离开手机,而且我确实会在夜间收到电子邮件和whatsapp

有没有办法让android恢复这种连接

欢迎任何提示或帮助

致以最良好的祝愿, 费德里科

我的代码:

来自广播接收器的OnReceive方法:

@Override
public void onReceive(Context context, Intent intent) {
    ...
    // acquire partial wake lock
    _PowerManager.acquire();

    // check internet access
    if (!_Utils.isDataEnabled()){
        // here is where it enters at 6am, isDataEnabled return false, so it enters here
        _Log.d("_BroadcastReceiver_Synchronize:onReceive","No internet, cancel sinc");
         // release partial wake lock
        _PowerManager.release();
        return;
    }

    // excecute async task that downloads data
    _WebServicesGet ws = new _WebServicesGet(null, null, null);
    ws.syncAll(this, false);
    return;
}
_Utils.isDataEnabled:

public static Boolean isDataEnabled() {
    // this method returns false at 6am
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

公共软件让我走上了正确的道路

答案是打瞌睡模式:安卓6和更高版本可以让手机进入打瞌睡模式,在这种模式下,应用程序将无法访问互联网(除其他外)。因此,如果您设置了警报和唤醒锁,则可以访问CPU,但不能访问Internet。文档中说,如果设备插入,它将不会进入打瞌睡模式,但在我的情况下,它确实会进入,尽管处于插入状态:

发件人:

如果用户在屏幕关闭的情况下将设备拔出并静止一段时间,设备将进入打瞌睡模式

这令人困惑

不管怎样,我试着将我的应用程序列入白名单,它开始工作得很好。闹钟在早上6点响,广播接收器现在可以上网了

同样来自:

用户可以在设置>电池>中手动配置白名单 电池优化。或者,系统提供应用程序的方式 要求用户将其列入白名单

希望我说清楚了,这对其他人有帮助


感谢Commonware。

您在清单中设置了internet权限了吗?感谢Gonzalo,是的,我的应用程序具有internet权限。感谢CommsWare提供的链接。但我很难得出结论。就我所读到的内容而言,只有在设备拔下插头的情况下,才会进入打瞌睡模式。就我而言,它是插上插头的。所以它不应该进入打瞌睡模式,对吗?你对我如何实现目标(早上6点数据下载)有什么建议吗?再次感谢。向你问好,费德里科。