是否可以在低电耗模式处于活动状态时使用网络访问?如果我的应用忽略电池优化,它不会进入待机状态,但会受到低电耗模式的影响。我错过了什么吗?
ee7vknir1#
无论您的应用程序是否忽略电池优化,网络访问在休眠模式下都将被禁用。将设备从休眠模式唤醒并获取网络访问权限的唯一方法是向您的应用程序发送高优先级Google Cloud消息。编辑:可以让Android忽略应用的电池优化,这实际上禁用了应用的打盹模式,但是这需要使用方法 setExactAndAllowWhileIdle(最多每15分钟唤醒一次)和用户交互,可以这样做:
Intent intent = new Intent(); String packageName = context.getPackageName(); PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); //battery optimizations toggle if (pm.isIgnoringBatteryOptimizations(packageName)) //give the user the option to enable battery optimizations again intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS); else { intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + packageName)); } context.startActivity(intent);
编辑:建议将权限 android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 添加到清单中。此外,这对于建议的解决方案是不必要的,它将导致您的应用从Play商店中删除。
m1m5dgzv2#
根据文档,您现在可以为您的应用程序提供前台通知,这将无视打盹模式,您的应用程序应该能够访问网络。
2条答案
按热度按时间ee7vknir1#
无论您的应用程序是否忽略电池优化,网络访问在休眠模式下都将被禁用。将设备从休眠模式唤醒并获取网络访问权限的唯一方法是向您的应用程序发送高优先级Google Cloud消息。
编辑:可以让Android忽略应用的电池优化,这实际上禁用了应用的打盹模式,但是这需要使用方法 setExactAndAllowWhileIdle(最多每15分钟唤醒一次)和用户交互,可以这样做:
编辑:建议将权限 android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 添加到清单中。此外,这对于建议的解决方案是不必要的,它将导致您的应用从Play商店中删除。
m1m5dgzv2#
根据文档,您现在可以为您的应用程序提供前台通知,这将无视打盹模式,您的应用程序应该能够访问网络。