2012-05-31 47 views
0

我在OnRecieve(限制敬酒消息)廣播reciever的一個奇怪的問題如何在廣播reciever()的onrecieve一次顯示一個麪包不要一次

我寫的代碼顯示敬酒時WiFi和藍牙都啓用/禁用

,但如果我啓用/禁用無線網絡,烤麪包藍牙也出現,反之亦然一個,即出現一個所有4敬酒的消息時,我enble /關閉藍牙和WiFi

我想要什麼要做的是我想顯示一個烤麪包時,無線網關/開,也bluettoth個人

if WIFI is on - "wifi enabled" 
if WIFI is off - "wifi disabled" 
If bluetooth is on - "Bluetooth enabled" 
If bluetooth is off - "Bluetooth disabled" 

只有一個麪包而不是一次全部

如何解決這個問題?

任何幫助表示讚賞,感謝

這裏是我的代碼

public class MyService extends BroadcastReceiver { 
private WifiManager wifiManager; 
@Override 
public void onReceive(Context context, Intent arg1) { 
    // TODO Auto-generated method stub 

    wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
     BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); 

    if(wifiManager.isWifiEnabled()){ 
     Toast.makeText(context.getApplicationContext(), "WIFI Enabled", Toast.LENGTH_LONG).show(); 
    }else {  
     Toast.makeText(context.getApplicationContext(), "WIFI Disabled", Toast.LENGTH_LONG).show(); 
    } 
    if(adapter.isEnabled()){ 

     Toast.makeText(context.getApplicationContext(), "Bluetooth Enabled", Toast.LENGTH_LONG).show(); 

    }else {  
     Toast.makeText(context.getApplicationContext(), " Bluetooth Disabled", Toast.LENGTH_LONG).show(); 
    } 

} 
+0

你想要一次顯示一個Toast嗎? – Lucifer

+0

是的,一次單獨吐司 – Randroid

+0

確定您的要求@Raghav,試試我的答案,您將得到準確的結果 – Lucifer

回答

1

接收機獲取調用每當無線狀態是changed.And你表現祝酒WiFi和Bluetooth.So其顯示兩個吐司。它不是這樣的,當藍牙啓用或禁用你的WiFi是沒有啓用或禁用。無線和藍牙都啓用或禁用狀態。

解決你的問題,你可以嘗試像

public void onReceive(Context context, Intent arg1) { 
    // TODO Auto-generated method stub 
    if(arg1.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { 
      wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
      if(wifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLED||wifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLING){ 
        Toast.makeText(context.getApplicationContext(), "WIFI Enabled", Toast.LENGTH_LONG).show(); 
      }else {  
        Toast.makeText(context.getApplicationContext(), "WIFI Disabled", Toast.LENGTH_LONG).show(); 
      } 
    }else { 
      BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); 
      if(adapter.isEnabled()){ 
        Toast.makeText(context.getApplicationContext(), "Bluetooth Enabled", Toast.LENGTH_LONG).show(); 

      }else {  
        Toast.makeText(context.getApplicationContext(), " Bluetooth Disabled", Toast.LENGTH_LONG).show(); 
      } 
    }    
} 
+0

感謝您的回覆,但我應該在哪裏更改代碼?因爲我是Android新手,我不知道該怎麼做。 – Randroid

+0

查看更新的答案 – Rasel

+0

感謝Rasel,但是當我禁用WiFi時,顯示「wifi disabled」,當我啓用wifi時顯示「wifi disabled」,「wifi enabled」,同時顯示兩個烤麪包和藍牙情況下也一樣 – Randroid

0

在你的代碼有兩個不同的如果條件,這是你所得到的顯示兩幅吐司的唯一原因。看看我在這裏更新的代碼,它會解決你的問題。

public class MyService extends BroadcastReceiver 
{ 
    private WifiManager wifiManager; 
    @Override 
    public void onReceive(Context context, Intent arg1) 
    { 
     // TODO Auto-generated method stub 
     wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
     BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); 

     if(wifiManager.isWifiEnabled()) 
     { 
      Toast.makeText(context.getApplicationContext(), "WIFI Enabled", Toast.LENGTH_LONG).show(); 
     } 
     else if (!wifiManager.isWifiEnabled()) 
     {  
      Toast.makeText(context.getApplicationContext(), "WIFI Disabled", Toast.LENGTH_LONG).show(); 
     } 
     else if(adapter.isEnabled()) 
     { 
      Toast.makeText(context.getApplicationContext(), "Bluetooth Enabled", Toast.LENGTH_LONG).show(); 
     } 
     else if (!adapter.isEnabled()) 
     {  
      Toast.makeText(context.getApplicationContext(), " Bluetooth Disabled", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
+0

Wifi始終啓用或禁用,無論藍牙。因此,他永遠不會得到一個祝酒藍牙狀態。他必須測試與意圖行動「爲什麼行動的接收器被解僱」 – Rasel

+0

謝謝,但是當我禁用WiFi顯示「無線網絡禁用」,當我啓用無線網絡顯示「無線網絡禁用」,「無線啓用」其同時顯示吐司和藍牙的情況。我試了兩個答案,但結果是一樣的 – Randroid