0

アプリの起動時に、GPRS/3Gがオンかオフかを確認したいと思います。私は以下のこのコードを持っています、そしてそれはインターネットがオン(wifiまたは3G)であるかどうかを一般的にチェックし、例えばwifiがオンであるかどうかは私のwifiとgprsの両方のトグルボタンをオンに設定します。そして、私はそれを持つことはできません。Wi-Fiがオンになっている場合は、gprsではなくWi-Fiトグルボタンのみをオンにします。ボタンは正常に機能し、起動時に値を確認して設定するだけでは機能しません。

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

    }

}
4

1 に答える 1

1

モバイルデータを取得/設定するためのパブリックAPIがないため、リフレクションを使用してモバイルが現在有効になっているかどうかを確認する必要があります。

このスレッドを参照してください。 モバイルネットワークが有効/無効になっているかどうかを確認する方法

于 2013-03-14T14:00:39.310 に答える