2015-04-20 3 views
1

Я начинаю с андроид-студии, и я пытался, чтобы приложение проверило подключение до начала, для этого я создаю заставку, но я действительно не нахожу способ рассчитать время для проверки подключения, мое требование состоит в том, что экран заставки остается видимым только во время проверки подключения. Это то, что у меня в OnCreate метода:Android Starter Project Structure

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    int myTimer = 4000; 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Intent i = new Intent(Splash.this, DashBoard.class); 
      boolean result = AppManager.CheckConnectionStatus(getApplicationContext()); 
      if(result == true) { 
       startActivity(i); 
      } 
      else{ 
       //Show a Message informing there is not internet connection 
      } 

      finish(); 
     } 
    }, myTimer); 

    setContentView(R.layout.activity_splash); 
} 

Как вы можете видеть, что я жду 4000 мса, но это не идея ... Если какие-либо есть какие-либо идеи о том, как я могу справиться с этим I будут благодарны.

ответ

0

Как я понимаю, вы хотите проверить доступность сети, а затем, если доступно, начните MainActivity. Вы можете проверить доступность сети с помощью этой функции:

public boolean isInternetAvailable(Context context) 
{ 
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager) 
     context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 

    if (info == null){ 
     return false; 
    } 
    else{ 
     return true; 
    } 
} 

Затем добавьте эти коды на вашем SplashScreen деятельности:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash); 

    Intent i = new Intent(Splash.this, DashBoard.class); 

    if(isInternetAvailable(Splash.this)){ 
     startActivity(i); 
     finish(); 
    } 
    else{ 
     Toast toast = Toast.makeText(Splash.this, 
      "Please check your internet options...", Toast.LENGTH_SHORT); 
     toast.setGravity(Gravity.CENTER, 0, 0); 
     toast.show(); 
     finish(); 
    } 
} 

Не забудьте добавить это разрешение на ваш файл манифеста:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

Хотел бы я понять вас правильно. Удачи.

+0

Точно вы правы !!! Большое спасибо за вашу помощь. –

+0

Добро пожаловать. –

0

В этом случае вы можете использовать AsyncTask. Вот несколько простых кодов для начала работы:

public class CheckConnectionAsyncTask extends AsyncTask<Void, Void, Boolean> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     // Display some waiting progress bar or a splash image here 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     return AppManager.CheckConnectionStatus(getApplicationContext()); 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 
     super.onPostExecute(aBoolean); 

     if (result) { 
      // start next activity 
     } else { 
      // error message that you're not connected. 
     } 
    } 
} 

Надеюсь, это поможет!

+0

Большое спасибо, я попробую ваш пример, он кажется очень полезным для многих вещей в моем приложении, я очень ценю вашу помощь. –

Смежные вопросы