Android手机监视网络状态的变化--关于权限的一个小问题
2016-12-23 18:05
465 查看
只是一个简单的小程序,手机切换网络状态,弹出吐司,提示网络状态发生变化。问题出现在每当切换状态,程序就会崩溃,并报错如下:
我当时怀疑人生,到stackflow中查了一下,还真有人和我出现相同的问题,
呵,对对对,就是这种情况,和我一模一样。不谋而合,一开始以为是自己的手机的Android6.0没有办法办法获得权限呢!(坑)
折腾了3天,脑袋都要爆炸了。
然后就把Android中《Android6.0动态权限申请步骤以及需要注意的一些坑》看了好几遍,手写好多遍!牵一发动全身,学艺不精的后果。欲哭无泪!
解决的办法很简单,不是动态权限的问题,因为CHANGE_NETWORK_STATE属于普通权限,只需要在AndroidManifest.xml文件中进行注册即可。
网络上几乎所有的文章,都说是在注册文件中加入以下权限就可以了
呵呵,其实还有下面这个权限呢!!!!!!!!!
就这样,所有的问题,就是这一句代码的事情!!
以下是源代码,关于广播接收者监视网络状态变化
代码有点点乱,其中涉及到一开始摸着石头过河,处理动态权限的问题。
Neither user nor current process has android.permission.CHANGE_NETWORK_STATE
我当时怀疑人生,到stackflow中查了一下,还真有人和我出现相同的问题,
呵,对对对,就是这种情况,和我一模一样。不谋而合,一开始以为是自己的手机的Android6.0没有办法办法获得权限呢!(坑)
折腾了3天,脑袋都要爆炸了。
然后就把Android中《Android6.0动态权限申请步骤以及需要注意的一些坑》看了好几遍,手写好多遍!牵一发动全身,学艺不精的后果。欲哭无泪!
解决的办法很简单,不是动态权限的问题,因为CHANGE_NETWORK_STATE属于普通权限,只需要在AndroidManifest.xml文件中进行注册即可。
网络上几乎所有的文章,都说是在注册文件中加入以下权限就可以了
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
呵呵,其实还有下面这个权限呢!!!!!!!!!
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
就这样,所有的问题,就是这一句代码的事情!!
以下是源代码,关于广播接收者监视网络状态变化
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Build; import android.widget.Toast; import com.orhanobut.logger.Logger; /** * Created by Administrator on 2016/12/21. */ public class NetWorkStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Logger.d("network state changed"); if (!isNetworkAvailable(context)) { Toast.makeText(context, "你现在处于一个没有网络的异世界", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(context, "网络通畅", Toast.LENGTH_SHORT).show(); } } /** * 网络状态可用 * * @param context * @return */ private boolean isNetworkAvailable(Context context) { ConnectivityManager netManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { NetworkInfo[] info = netManager.getAllNetworkInfo(); if (info != null) { for (int i = 0; i < info.length; i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } return false; } return false; } }
代码有点点乱,其中涉及到一开始摸着石头过河,处理动态权限的问题。
相关文章推荐
- 关于android广播包监听网络状态变化收到java.lang.NullPointerException: Error receiving broadcast Intent
- Android关于华为手机的权限问题
- 【android】解决方案--用BroadcastReceiver监听手机网络状态变化
- 关于Android中fragment中创建popwindow全屏显示时手机状态遮挡popwindow的问题
- Android解决使用广播监听网络状态变化时接收到多个广播的问题
- Android监测手机网络状态变化的广播
- Android:关于Android Studio连接手机的各种问题 & 解决“通常每个套接字地址(协议/网络地址/端口)只允许使用一次(10048)”的问题。
- android--解决方案--用BroadcastReceiver监听手机网络状态变化
- 关于android 获取手机号码的问题
- Android监听网络连接状态变化
- 关于android service生命周期里面值得注意的一个问题
- android 关于ExpandableListView的一个问题解决
- 关于android手机和平板存储卡路径不同的问题
- android 手机接入点设置与网络状态检查(转自:eggic.com)
- 一个我很长时间才解决的关于xp与2000共享的网络问题
- 关于android手机不能调试的问题
- android获取手机的网络状态
- 一个有关于android设置的小问题
- 关于android中gen目录的一个小问题
- Android官方网站关于的tab layout的一个问题