Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 广播接收机:为什么它不';不行?_Java_Android_Xml - Fatal编程技术网

Java 广播接收机:为什么它不';不行?

Java 广播接收机:为什么它不';不行?,java,android,xml,Java,Android,Xml,我有一个广播接收器,可以获取并保持电池的最新信息。有关电池工作正常的信息,在不需要重新创建活动的情况下更新电池,而WiFi号码。例如,如果禁用WiFi,则不会更改首选项的摘要(并且应该)。为什么?我该怎么修理?这是代码 @Override protected void onStop() { unregisterReceiver(batteryInfoReceiver); super.onStop(); } @Override protected void onRestart()

我有一个广播接收器,可以获取并保持电池的最新信息。有关电池工作正常的信息,在不需要重新创建活动的情况下更新电池,而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);
    }
    }
    };
@覆盖
受保护的void onStop()
{
未注册接收人(预测接收人);
super.onStop();
}
@凌驾
受保护的void onRestart()
{
this.registerReceiver(this.batteryForeceiver,新的IntentFilter(Intent.ACTION\u BATTERY\u CHANGED));
super.onRestart();
}
private BroadcastReceiver BatteryForeceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
WifiManager wifiMgr=(WifiManager)getSystemService(WIFI_服务);
WifiInfo WifiInfo=wifiMgr.getConnectionInfo();
int-level=intent.getIntExtra(BatteryManager.EXTRA_-level,0);
String technology=intent.getExtras().getString(BatteryManager.EXTRA_technology);
int-temperature=intent.getIntExtra(电池管理器额外温度,0)/10;
int电压=intent.getIntExtra(电池管理器额外电压,0);
int chargePlug=intent.getIntExtra(BatteryManager.EXTRA_-1);
布尔值usbCharge=chargePlug==BatteryManager.BATTERY\u plug\u USB;
布尔值acCharge=充电插头==电池管理器.BATTERY\u插头\u AC;
if(sdkVersion
我认为您的接收器未注册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);

你能把舱单寄出去吗?您是否正确设置了捕获连接事件的意图过滤器?您已在清单中使用正确的意图过滤器注册了BroadcastReceiver?它可以工作,但现在我遇到了一个问题。当我在我的首选项中禁用和启用WiFi后,IP地址为0.0.0.0,速度为-1 Mbps。为什么以及如何解决这个问题?