我使用广播接收器来收听当前的wifi状态。 因此它将当前状态设置为togglebutton(setText)的文本(连接,连接,禁用,...)。
一切正常!
但现在我想对移动数据状态做同样的事情。
所以我使用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 :(得分:-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);
}