2012-02-07 32 views
0

我要聽連接的變化和嘗試它,如下所示:接收器連接事件不起作用

清單

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<!-- ....... --> 

<receiver 
     android:name="<packagename>.ConnectionReceiver"> 
     <intent-filter> 
      <action android:name="ConnectivityManager.CONNECTIVITY_ACTION" /> 
     </intent-filter> 
</receiver> 

public class ConnectionReceiver extends BroadcastReceiver { 

private static final String TAG = "ConnectionReceiver"; 

@Override 
public void onReceive(Context context, Intent intent) { 

    Log.i(TAG, "Connection changed"); 

     } 
} 

不幸的是,它不似乎在我打開和關閉WiFi連接時被調用。

這裏有什麼問題,我錯過了什麼?

+0

這是什麼動作?嘗試使用android.net.conn.CONNECTIVITY_CHANGE行動 – rciovati 2012-02-07 14:50:13

+0

謝謝,你的是對的。但不幸的是,上面的接收器僅被稱爲一次,儘管我將WiFi連接關閉了大約15次。 – ceran 2012-02-07 15:11:57

回答

0

你可以嘗試這樣的事:

在AndroidManifest.xml後在 「清單」

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

在AndroidManifest.xml中下的 「應用程序」

<receiver android:name="com.blackboard.androidtest.receiver.ConnectionChangeReceiver"   android:label="NetworkConnection"> 
<intent-filter> 
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
</intent-filter>  
</receiver> 

接收器類:

public class ConnectionChangeReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); 
     NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     if (activeNetInfo != null) { 
      Toast.makeText(context, "Active Network Type : " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT).show(); 
     } 
     if (mobNetInfo != null) { 
      Toast.makeText(context, "Mobile Network Type : " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+0

謝謝,但對不起,我看不出這裏的區別。這是不是我一樣?我的問題是,onReceive方法只會被調用一次,我認爲你的Receiver類(肯定比我的更好)不能解決這個問題。在** – ceran 2012-02-07 15:31:06

+0

之前**發生問題嗨ceran,android在互聯網連接斷開或更改狀態時拋出廣播。你只需要抓住那個廣播,所以你不需要每次都檢查。 – Lars 2012-02-07 16:29:27

+0

嗨拉爾斯,謝謝。這正是我想要做的,我認爲我的方法應該這樣做,但是當我多次打開和關閉Wi-Fi連接時,它只接收一次廣播。 – ceran 2012-02-08 10:52:45