美文网首页
关于android.net.conn.CONNECTIVITY_

关于android.net.conn.CONNECTIVITY_

作者: LeongAndroid | 来源:发表于2017-10-27 09:28 被阅读0次

在工作中调试一个功能的时候,发现之前的android.net.conn.CONNECTIVITY_CHANGE的广播始终无法收到,而adb logcat打印出来的log发现有其他应用可以收到这个广播的。后来研究发现在Android7.0 上为了优化后台省电相关的东西,已经将静态注册这个广播方式取消了,7.0 版本上静态注册此广播的,已经无法收到这个广播了。
Android 7.0 为了后台优化,推荐使用 JobScheduler 代替 BroadcastReceiver 来监听网络变化。

如果你的应用无法将targetSDK 降到23或者23以下,有以下两种比较快捷的适配方式。
解决方式有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 这个权限的时候,应用报错的情况。

总结

1.如果应用程序的targetSDK >= N,可以采用上述两种方案解决此问题,也就是说静态注册android.net.conn.CONNECTIVITY_CHANGE不再起作用,需要修改成动态注册或者使用ConnectivityManager.NetworkCallback监听网络。
2.如果应用程序的targetSDK<N,即使安装在Android7.0机器上,同样可以收到静态注册的广播。

感谢

参考:http://blog.csdn.net/hqiangtai/article/details/53228510

相关文章

  • 关于android.net.conn.CONNECTIVITY_

    在工作中调试一个功能的时候,发现之前的android.net.conn.CONNECTIVITY_CHANGE的广...

  • 关于关于关于

    他们爱他们自己,不爱你 他们爱你是他们的母亲妻子女儿姐妹 他们不爱你 直到你死的时候,爱才产生,与遗忘同时 那也不...

  • 光明人生

    关于出生 关于成长 关于求学 关于青春期 关于恋爱 关于择业 关于婚姻 关于养生 关于家庭 关于人际 关于教子 关...

  • 「梦雅的简动力」打卡计时65天

    * 关于人生 * 关于梦想 * 关于方向 * 关于创业 * 关于投资 * 关于成败 * 关于个性 * 关于高度 *...

  • 关于

    关于两个人? 关于100步? 关于回头? 关于深情? 关于家庭? 关于孩子? 关于成长? 关于伤痛? 关于怀抱? ...

  • 2017新手妈妈年终总结

    关于购物 关于体重 关于减肥 关于纪念日 关于生活态度 关于上班 关于职场晋升加薪 关于睡眠 关于抱孩子 关于发型...

  • 2018-11-28

    关于流浪、关于随心、关于自由、关于世俗、关于规则、关于坦诚、关于真我、关于好奇心、关于对这整个世界的态度、关于整个...

  • 一首歌的时间

    认真的 想理出点思绪 关于今天关于明天 关于工作关于梦想 关于冬天关于夜晚 关于阳光关于浪花 关于木马关于窗花 关...

  • 最近的各种关于

    关于运动,关于中文阅读,关于英文听力,关于口算。 关于专注,关于目标,关于举家迁移。 关于对正确的过于执着,关于对...

  • 『关于』

    关于雨落,关于天晴; 关于入夜,关于天明; 关于齐眉,关于耳鬓; 关于缘定,关于今生。 (早安~诸君!)

网友评论

      本文标题:关于android.net.conn.CONNECTIVITY_

      本文链接:https://www.haomeiwen.com/subject/wpqrpxtx.html