2013-03-14 139 views
0

我想检查,当我的应用程序启动时,如果GPRS/3G打开或关闭。我在下面有这个代码,并且它通常检查互联网是否打开(wifi或3G),并且例如wifi是否打开,将我的wifi和gprs开关按钮设置为ON。我不能那样。我想如果wifi打开只有wifi切换按钮,而不是gprs。按钮工作正常,只有在启动时检查并设置它的值不起作用。如何检查GPRS/3G是否打开?

public class SwarmPopup extends SwarmActivity implements OnClickListener{ 

    private boolean isNetworkConnected() { 
      ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo ni = cm.getActiveNetworkInfo(); 
      if (ni == null) { 
      // There are no active networks. 
      return false; 
      } else 
      return true; 
     } 


    Button ok; 
    WifiManager wifiMan; 
    ToggleButton wifi, gprs; 

    @Override 
    protected void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.swarmpopup); 

     addListenerOnButton(); 

     wifi.setChecked(wifiMan.isWifiEnabled()); 

     ok.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
      } 
     }); 



     wifi.setOnClickListener(new OnClickListener() { //Ukljucuje WiFi 

      @Override 
      public void onClick(View v) { 

       wifi.setEnabled(wifiMan.isWifiEnabled()); 

       try 
        { 
        if (((ToggleButton)v).isChecked()){ 
        SwarmPopup.this.wifiMan.setWifiEnabled(true); 
        Toast.makeText(getApplicationContext(), "WiFi je uključen", Toast.LENGTH_LONG).show(); 
        }else{ 
         SwarmPopup.this.wifiMan.setWifiEnabled(false); 
        Toast.makeText(getApplicationContext(), "WiFi je isključen", Toast.LENGTH_LONG).show(); 
        } 
        } 
       catch (Exception localException) 
        { 
        Log.e("SwarmPopup", "error on WiFi listerner: " + localException.getMessage(), localException); 
        } 
      } 
     }); 

     gprs.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       try 
        { 
        if (((ToggleButton)v).isChecked()){ 
         GprsSettings.setMobileDataEnabled(getApplicationContext(), true); 
        Toast.makeText(getApplicationContext(), "GPRS je uključen", Toast.LENGTH_SHORT).show(); 
        }else{ 
         GprsSettings.setMobileDataEnabled(getApplicationContext(), false); 
        Toast.makeText(getApplicationContext(), "GPRS je isključen", Toast.LENGTH_SHORT).show(); 
        } 
        } 
       catch (Exception localException) 
        { 
        Log.e("SwarmPopup", "error on GPRS listerner: " + localException.getMessage(), localException); 
        } 
      } 
     }); 

     gprs.setChecked(isNetworkConnected()); 

    } 

    private void addListenerOnButton() { 
     Typeface dugme = Typeface.createFromAsset(getAssets(), "myriad.ttf"); 
     ok = (Button) findViewById(R.id.btOKSwarm); 
     ok.setTypeface(dugme); 
     gprs = (ToggleButton) findViewById(R.id.tbGPRS); 
     wifi = (ToggleButton) findViewById(R.id.tbWiFi); 

     // Getting the WiFi Services 
     wifiMan=(WifiManager)getSystemService(Context.WIFI_SERVICE); 
     //Proverava da li je WiFi ukljucen ili ne 


    } 

    @Override 
    public void onClick(View v) { 

    } 

} 
+0

你到底想要什么?检测是否启用3g/gprs? – stinepike 2013-03-14 14:05:36

回答

1

你需要使用反射来检查,如果移动用户当前启用与否因为为get/set方法移动数据没有公共API

看到这个话题。 How to check if mobile network is enabled/disabled

+0

谢谢,就是这样。我搜索和搜查,但我错过了那一个。 – user2083882 2013-03-14 14:18:53

+0

因为你在玩这些功能......我得告诉你,他们正在控制硬件,因此有时会有一段时间才能读取设备的真实状态! – cwhsu 2013-03-14 14:22:19

+0

我会记住这一点。谢谢。 – user2083882 2013-03-14 14:54:24