广播接收器:为什么它不起作用?

马里奥·G。

我有这个广播接收器,它可以获取并保持有关电池的最新信息。有关电池的信息运作良好,从某种意义上来说,无需重新创建活动即可对其进行更新,而WiFi则不需要。例如,如果我禁用WiFi,则不会更改“偏好摘要”(并且应该更改)。为什么?我该如何解决?这是代码。

@Override
protected void onStop()
{
    unregisterReceiver(batteryInfoReceiver);
    super.onStop();
}

@Override
protected void onRestart()
{
    this.registerReceiver(this.batteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    super.onRestart();
}

private BroadcastReceiver batteryInfoReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
        WifiInfo wifiInfo = wifiMgr.getConnectionInfo();

    int level= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);
    String technology= intent.getExtras().getString(BatteryManager.EXTRA_TECHNOLOGY);
    int temperature= intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0)/10;
    int voltage= intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE,0);

    int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
    boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
    boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
    if (sdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR1) {
        boolean wCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_WIRELESS;

        if(wCharge) {
            ricarica.setSummary("Charging (WiFi)");
        }
    }

    if(usbCharge) {
        ricarica.setSummary("Charging (USB)");
    }
    else if (acCharge){
        ricarica.setSummary("Charging (AC)");
    }

    else {
        ricarica.setSummary("Not charging");
    }

    livelloBatteria.setSummary("Battery at "+level+"%");
    livelloVoltaggio.setSummary(voltage+" mV");
    livelloTemperatura.setSummary(Integer.toString(temperature)+"° Celsius");
    tecnologia.setSummary(technology);

    int ip = wifiInfo.getIpAddress();
    int speed = wifiInfo.getLinkSpeed();
    String speedString = Integer.toString(speed);
    String mac = wifiInfo.getMacAddress();
    String ssid = wifiInfo.getSSID();
    String ipAddress = Formatter.formatIpAddress(ip);

    if (wifiMgr.isWifiEnabled()){

    if(mac!=null) {
        indirizzoMac.setSummary(mac);
    }
    else {
        indirizzoMac.setSummary("Unkown");
    }

    if(ipAddress!=null) {
    indirizzoIp.setSummary(ipAddress);
    }
    else {
        indirizzoIp.setSummary("Unkown");
    }

    if(ssid!=null) {
        indirizzoSsid.setSummary(ssid);
    }
    else {
        indirizzoSsid.setSummary("Unkown");
    }

    if(speedString!=null) {
        velocità.setSummary(speedString+" Mbps");
    }

    else {
        velocità.setSummary("Unkown");
    }

    }

    else {
        indirizzoIp.setSummary("WiFi disabled");
        indirizzoSsid.setSummary("WiFi disabled");
        velocità.setSummary("WIFi disabled");
        indirizzoMac.setSummary(mac);
    }
    }
    };
维普尔米塔尔

我认为您的接收器尚未注册以进行wifi连接更改,请尝试向其添加另一个过滤器:

IntentFilter filter= new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
this.registerReceiver(this.batteryInfoReceiver,filter);

您还可以添加连接更改操作以进行过滤,以便在网络连接更改时调用onReceive:

filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

开机接收器不起作用

来自分类Dev

广播接收器的最高优先级不起作用

来自分类Dev

启动应用程序而没有任何活动,我的广播接收器不起作用

来自分类Dev

带有wifi扫描的广播接收器不起作用

来自分类Dev

用于测试网络状态的广播接收器不起作用

来自分类Dev

Xamarin.Forms:应用程序关闭时,广播接收器不起作用

来自分类Dev

Android广播接收器(屏幕)在Moto g上不起作用

来自分类Dev

用于启用移动连接的广播接收器不起作用

来自分类Dev

为什么广播接收器不调用服务

来自分类Dev

Android-广播接收器以检测耳机按钮单击在API 23上不起作用(棉花糖)

来自分类Dev

手动注册了屏幕外的广播接收器的意图过滤器,但不起作用?

来自分类Dev

Android-广播接收器以检测耳机按钮单击在API 23上不起作用(棉花糖)

来自分类Dev

为什么它不起作用从MainActivity接收的SMSReceived中的导入功能?

来自分类Dev

级联接收器模式。更新不起作用

来自分类Dev

ACTION_BOOT_COMPLETED接收器不起作用

来自分类Dev

从IntentService创建的接收器不起作用

来自分类Dev

连接更改接收器不起作用?

来自分类Dev

广播接收器

来自分类Dev

jQuery-为什么在选择器上使用它不起作用?

来自分类Dev

putExtra(),getStringExtra()-为什么它不起作用?

来自分类Dev

选项卡式视图,为什么它不起作用?

来自分类Dev

为什么我设置了〜/ .bashrc但它不起作用?

来自分类Dev

putExtra(),getStringExtra()-为什么它不起作用?

来自分类Dev

无法看到为什么它不起作用

来自分类Dev

为什么某些广播接收器只能通过Code或AndroidManifest注册

来自分类Dev

为什么广播接收器在服务内部无法连续工作

来自分类Dev

为什么我的屏幕开/关广播接收器无法正常工作?

来自分类Dev

为什么广播接收器不适用于服务应用程序 android?

来自分类Dev

为什么广播频道公共不起作用?Laravel

Related 相关文章

  1. 1

    开机接收器不起作用

  2. 2

    广播接收器的最高优先级不起作用

  3. 3

    启动应用程序而没有任何活动,我的广播接收器不起作用

  4. 4

    带有wifi扫描的广播接收器不起作用

  5. 5

    用于测试网络状态的广播接收器不起作用

  6. 6

    Xamarin.Forms:应用程序关闭时,广播接收器不起作用

  7. 7

    Android广播接收器(屏幕)在Moto g上不起作用

  8. 8

    用于启用移动连接的广播接收器不起作用

  9. 9

    为什么广播接收器不调用服务

  10. 10

    Android-广播接收器以检测耳机按钮单击在API 23上不起作用(棉花糖)

  11. 11

    手动注册了屏幕外的广播接收器的意图过滤器,但不起作用?

  12. 12

    Android-广播接收器以检测耳机按钮单击在API 23上不起作用(棉花糖)

  13. 13

    为什么它不起作用从MainActivity接收的SMSReceived中的导入功能?

  14. 14

    级联接收器模式。更新不起作用

  15. 15

    ACTION_BOOT_COMPLETED接收器不起作用

  16. 16

    从IntentService创建的接收器不起作用

  17. 17

    连接更改接收器不起作用?

  18. 18

    广播接收器

  19. 19

    jQuery-为什么在选择器上使用它不起作用?

  20. 20

    putExtra(),getStringExtra()-为什么它不起作用?

  21. 21

    选项卡式视图,为什么它不起作用?

  22. 22

    为什么我设置了〜/ .bashrc但它不起作用?

  23. 23

    putExtra(),getStringExtra()-为什么它不起作用?

  24. 24

    无法看到为什么它不起作用

  25. 25

    为什么某些广播接收器只能通过Code或AndroidManifest注册

  26. 26

    为什么广播接收器在服务内部无法连续工作

  27. 27

    为什么我的屏幕开/关广播接收器无法正常工作?

  28. 28

    为什么广播接收器不适用于服务应用程序 android?

  29. 29

    为什么广播频道公共不起作用?Laravel

热门标签

归档