0

I want to check, when my app is starting, if GPRS/3G is on or off. I have this code below, and it checks generally if internet is on (wifi or 3G) and if for example wifi is on it sets my both wifi AND gprs toggle buttons ON. And I can't have that. I want if wifi is on to turn on only wifi toggle button, not the gprs. Buttons works fine, only checking and setting it's values on startup does not work.

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) {

    }

}
Nabukodonosor
  • 699
  • 1
  • 8
  • 20

1 Answers1

1

You need to use reflection to check if mobile is currently enabled or not because there is no public API for get/set mobile data.

see this thread. How to check if mobile network is enabled/disabled

Community
  • 1
  • 1
cwhsu
  • 1,493
  • 24
  • 31
  • Thank you, that's it. I searched and searched but I missed that one. – Nabukodonosor Mar 14 '13 at 14:18
  • since you're playing with these functions... I get to tell you that they're controlling hardware and thus sometimes there is a delay before you could read the true status of the device! – cwhsu Mar 14 '13 at 14:22