2012-07-19 50 views
0

我使用廣播接收器來監聽當前的wifi狀態。 因此,它將當前狀態設置爲togglebutton(setText)的文本(連接,連接,禁用...)。用於監聽移動數據狀態的BroadcastReceiver

它工作正常!

但現在我想要做同樣的事情與移動數據狀態..

所以我用TelephonyManager設置接收器:

this.registerReceiver(this.DataStateChangedReceiver, 
new IntentFilter(TelephonyManager.ACTION_PHONE_STATE_CHANGED)); 

然後我從WiFi接收器複製的代碼和編輯它:

private BroadcastReceiver DataStateChangedReceiver 
= new BroadcastReceiver() 
{ 

    @Override 
     public void onReceive(Context context, Intent intent) 
    { 
     // TODO Auto-generated method stub 


    int extraDataState = intent.getIntExtra(TelephonyManager.EXTRA_STATE , 
    TelephonyManager.DATA_DISCONNECTED); 

    switch(extraDataState){ 
    case TelephonyManager.DATA_CONNECTED: 
     data_toggle.setChecked(true); 


    break; 

    case TelephonyManager.DATA_DISCONNECTED: 
     data_toggle.setChecked(false); 


    break; 

    case TelephonyManager.DATA_CONNECTING: 
     data_toggle.setChecked(true); 


    break; 

    case TelephonyManager.DATA_SUSPENDED: 
     data_toggle.setChecked(true); 


    break; 

    } 
    } 
}; 

該應用程序啓動,但什麼都沒有發生與toogleButton .. 是TelephonyManager錯誤的方式做到這一點? ConnectivityManager?

我想設置一個onclicklistener打開/關閉移動數據。

怎麼做,這是接下來的問題..

+0

請訪問http ://stackoverflow.com/questions/3644144/how-to-disable-mobile-data-on-android有關如何啓用/禁用移動數據的信息 – 2012-07-19 09:07:22

回答

-1

在我的工作我已經使用ACTION_SCREEN_ON和_OFF一招......所以,關鍵是在這樣的事情....你創造在Receiver.class布爾變量,然後改變它,當連接狀態改變....然後在服務(或活動),你在哪裏得到的意圖幹什麼幹什麼.....

private boolean screenOff; 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
     screenOff = true; 
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
     screenOff = false; 
    } 
    Intent i = new Intent(context, InternetService.class); 
    i.putExtra("screen_state", screenOff); 
    context.startService(i); 
} 
+0

謝謝,但我不知道它是否對我有幫助.. 我在搜索hing的方法就像wifi一樣。 這裏沒有人寫過一個例子嗎? – freibergisch 2012-07-19 11:28:48