Android 7.0 网络变化通知遇到的问题
2017-10-18 19:21
465 查看
在工作中调试一个功能的时候,发现之前的android.net.conn.CONNECTIVITY_CHANGE的广播始终无法收到,而adb logcat打印出来的log发现有其他应用可以收到这个广播的。后来研究发现在Android7.0 上为了优化后台省电相关的东西,已经将静态注册这个广播方式取消了,7.0 版本上静态注册此广播的,已经无法收到这个广播了。
Android 7.0 为了后台优化,推荐使用 JobScheduler 代替 BroadcastReceiver 来监听网络变化。
目前还没研究使用JobScheduler如何实现。
解决方式有2种:
1.改成动态注册。
2.使用
第二种实现方式:
很简单。
AndroidManifest.xml中申明权限:
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"
/>
<uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
这几个权限都不是危险权限,直接申明即可。存在如果不申明android.permission.CHANGE_NETWORK_STATE
这个权限的时候,应用报错的情况。
参考:http://blog.csdn.net/hqiangtai/article/details/53228510
Android 7.0 为了后台优化,推荐使用 JobScheduler 代替 BroadcastReceiver 来监听网络变化。
目前还没研究使用JobScheduler如何实现。
解决方式有2种:
1.改成动态注册。
2.使用
ConnectivityManager.NetworkCallback来监听网络。
第二种实现方式:
final ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); cm.requestNetwork(new NetworkRequest.Builder().build(), new ConnectivityManager.NetworkCallback() { @Override public void onLost(Network network) { super.onLost(network);
///网络不可用的情况下的方法
} @Override public void onAvailable(Network network) { super.onAvailable(network); ///网络可用的情况下的方法 } });
很简单。
AndroidManifest.xml中申明权限:
<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"
/>
<uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
这几个权限都不是危险权限,直接申明即可。存在如果不申明android.permission.CHANGE_NETWORK_STATE
这个权限的时候,应用报错的情况。
参考:http://blog.csdn.net/hqiangtai/article/details/53228510
相关文章推荐
- Android 7.0编译的遇到的一些问题
- Android推送遇到的问题--app关闭后,点击通知后点击通知后app未初始化的问题
- android 网络通知的问题
- Android 7.0无法接收网络变化广播
- Android请求网络数据,json解析-FastJson遇到的问题 首字母大写问题
- android 7.0 download and install apk遇到的问题
- Android手机监视网络状态的变化--关于权限的一个小问题
- ANDROID-当网络发生变化时使用BroadcastReceiver和service通知
- Android 7.0 隐式广播-监听网络变化
- Android 7.0监听网络变化(转载)
- 解决用虚拟机或者公司网络下载android源码,遇到DownloadError: android.googlesource.com: <urlopen error [Errno 110] Connection timed out>的问题
- Android 7.0相机拍照及遇到的一些问题
- 使用 Android 自定义通知Notification时遇到的问题
- Android解决使用广播监听网络状态变化时接收到多个广播的问题
- Android之中如何用广播ConnectivityManager.CONNECTIVITY_ACTION监听网络变化,将其显示在通知栏上
- Android 7.0 隐式广播-监听网络变化
- Android 7.0 网络变化监听
- 编译Android 7.0遇到的问题
- Android 7.0 监听网络变化的示例代码
- 使用bugly做应用升级时android 7.0上遇到的问题