android.net.wifi.WIFI_STATE_CHANGED没有播出

前端之家收集整理的这篇文章主要介绍了android.net.wifi.WIFI_STATE_CHANGED没有播出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的应用程序中,如果连接了网络更改,我需要重新启动服务.目前它只能以一种方式工作(wifi到移动数据),但它不能以其他方式工作(移动数据到wifi.)为什么会这样?是因为我没有在我的广播接收器中获得 android.net.wifi.WIFI_STATE_CHANGED或者可能是错位的权限?

谢谢你的帮助.

码:
接收器的清单条目:

  1. <receiver
  2. android:name="LiveForever"
  3. android:label="NetworkChangeReceiver" >
  4. <intent-filter>
  5. <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
  6. <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
  7. </intent-filter>
  8. </receiver>

接收器本身:

  1. public static final int TYPE_WIFI = 1;
  2. public static final int TYPE_MOBILE = 2;
  3. public static final int TYPE_NOT_CONNECTED = 0;
  4. public static final String PREFS_NAME = "cakecloudpreferences";
  5.  
  6. @Override
  7. public void onReceive(Context context,Intent intent) {
  8. SharedPreferences settings = context.getSharedPreferences(PREFS_NAME,0);
  9. if (getConnectivityStatus(context)!=0&&!settings.getBoolean("osmframerunning",false)) {
  10. context.stopService(new Intent(context,OSMFrame.class));
  11. settings.edit().putBoolean("osmframerunning",false).commit();
  12. Intent frameintent = new Intent(context,OSMFrame.class);
  13. frameintent.putExtra("username",settings.getString("usr",""));
  14. frameintent.putExtra("password",settings.getString("pswd",""));
  15. frameintent.putExtra("uid",settings.getString("uid",""));
  16. context.startService(frameintent);
  17. Log.i("CCLiveForever","LiveForever Triggered,OSMFrame restarted.");
  18. }
  19. }
  20.  
  21. public int getConnectivityStatus(Context context) {
  22. ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  23. NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
  24. if (null != activeNetwork) {
  25. if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) return TYPE_WIFI;
  26. if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) return TYPE_MOBILE;
  27. }
  28. return TYPE_NOT_CONNECTED;
  29. }

我列出的相关权限:

> android.permission.ACCESS_WIFI_STATE
> android.permission.ACCESS_NETWORK_STATE
> android.permission.INTERNET

再次谢谢你!

解决方法

仅当启用或禁用WiFi时才会发送android.net.wifi.WIFI_STATE_CHANGED.如果您希望在连接到WiFi网络或从WiFi网络断开连接时接收广播事件,则还需要捕获android.net.wifi.STATE_CHANGE.

猜你在找的Android相关文章