2013-07-05 69 views
0

我想知道如何檢查移動數據何時使用BroadcastReceiver進行連接。使用BroadcastReceiver |檢查移動數據何時連接Android

這是我到目前爲止有:

private BroadcastReceiver MobileDataStateChangedReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     int state = intent.getIntExtra(TelephonyManager.EXTRA_STATE, 
       TelephonyManager.DATA_DISCONNECTED); 

     if (state == TelephonyManager.DATA_CONNECTED) { 
      mobileStatus.setText("Connected"); 
     } else if (state == TelephonyManager.DATA_DISCONNECTED) { 
      mobileStatus.setText("Disconnected"); 
     } 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.status_page); 

    mobileStatus = (TextView) this.findViewById(R.id.textView4); 

    registerReceiver(MobileDataStateChangedReceiver, new IntentFilter(
      TelephonyManager.ACTION_PHONE_STATE_CHANGED)); 
} 

什麼我這裏做錯了嗎?

我在Wi-Fi檢查上使用了相同的概念,它工作得很好? 我使用的權限:

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

回答

3

TelephonyManager.ACTION_PHONE_STATE_CHANGED似乎並沒有因爲工作,我能讀in TelephonyManager class description只火的電話,但無法與網絡或移動數據。 而不是這個,我建議你嘗試設置一個監聽器。這將是這樣的:

1)TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE)

二送服務)設置一個聽者tm.listen(myCustomPhoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);

3)一旦你的聽衆,你將能夠發送自定義意圖給您BroadcastReceiver,如果你仍然想這樣做。

+0

非常感謝你..它的工作原理和你說什麼之後我搜索了PhoneStateListener.LISTEN_DATA_CONNECTION_STATE,並且得到了這個:http://stackoverflow.com/questions/6179906/how-can-i-receive-a-notification - 當設備丟失 - 網絡連接 – dinbrca

+0

不客氣。我也在爲我的Android應用程序尋找類似的東西,以防止長時間下載:) – Molina