Показать тосты на заставке Android

#android #splash-screen #toast

#Android #заставка #тост #тосты

Вопрос:

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

У меня есть что-то подобное в моем коде заставки :

Внутри onCreate()

 ConnectivityManager connectivitymanager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkinfo = connectivitymanager.getActiveNetworkInfo();
        connected = networkinfo != null amp;amp; networkinfo.isAvailable()
                amp;amp; networkinfo.isConnected();
        Log.v("Network state : ", connected   "");

        Thread splashThread = new Thread() {
            @Override
            public void run() {
                try {
                    int waited = 0;
                    while (waited < 5000) {
                        sleep(100);
                        waited  = 100;
                    }
                } catch (InterruptedException e) {
                    // do nothing
                } finally {
                    Looper.prepare();
                    if (connected == false) {
                        Toast.makeText(
                                splashscreenActivity.this,
                                "No Network Connection is available on device.",
                                Toast.LENGTH_LONG).show();
                        finish();
                        System.exit(0);
                    } else {
                        finish();
                        startActivity(new Intent(splashscreenActivity.this,
                                mainActivity.class));
                    }
                    Looper.loop();
                }
            }
        };
        splashThread.start();
  

1. Пожалуйста, посмотрите мой код и подскажите, как я могу показать этот тост.
2. Или предложите мне какой-нибудь другой лучший способ сделать это

Спасибо

Редактировать :

Спасибо всем за ответы :

Я выбрал способ Дхармендры показывать тосты с помощью заставки :

Код, который работал для :

 if (connected == false) {
            splashscreenActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(splashscreenActivity.this,
                            "No Internet Connection.", 3000).show();
                }
            });
            finish();
        } else {
            //migrate to main activity from splashscreen
        }
  

Комментарии:

1. Почему бы не выполнить проверку перед отображением заставки, поэтому, прежде чем вы начнете поток. Или сделайте это после того, как будет передана заставка для следующего элемента управления activity.

2. 1) finish(); 2) startActivity(новое намерение (SplashScreenActivity.this, mainActivity.class )); Может быть, 2) 1)

3. разве мы не можем показывать тосты при отображении заставки??

Ответ №1:

Вы можете сделать это так, используя обработчик . Поместите следующий код в условие else

   Handler mHandler = new Handler(Looper.getMainLooper());

mHandler.post(new Runnable() {
                                public void run() {

                                    Toast.makeText(Splash.this, "Network error", Toast.LENGTH_LONG).show(); 
                                      finish();

                                }
                            });
  

Или я делаю это в своем приложении :

 if(status.equals("CONNECTED"))
                        {
                        startActivity(new Intent(Splash.this,Activity.class));
                        finish();
                        }else
                        { 
                        startActivity(new Intent(Splash.this,NetworkError.class));
                        finish();
                        }
  

где класс NetworkError показывает другой макет с изображением типа «Нет сети,,,,» (или что вы хотите показать вместо заставки …)

Комментарии:

1. 1 — Мне больше нравится идея второго действия, чем использование тостов.

2. Да, нибха, мне тоже понравился ваш подход .. 🙂 спасибо, что показали мне еще один вариант 🙂

Ответ №2:

Вы создаете и показываете тосты из потока, поэтому они могут не вызываться

Вы должны написать этот код

 splashscreenActivity.this.runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(c, "Internet connection not currently available.", 3000).show();
                }
            });
  

Ответ №3:

Просто добавьте блок if else. (используя информацию о сети подключения ur)

 if(connected){
//put the splash thread here
}else{
 finish();
}
  

Комментарии:

1. Спасибо за ответ Валиду Хоссейну, но где я должен показать тост?

Ответ №4:

Блок finally используется, если вы не хотите перехватывать какие-либо исключения. В вашем коде поместите весь свой код в цикл else, если время 5000 истекает, перейдите к инструкции else и выполните ее. Если вы добавляете catch, вы можете удалить его окончательно.

Комментарии:

1. Я, наконец, блокирую, если вы хотите, чтобы что-то запускалось независимо от того, было ли обнаружено исключение или они выходят из этого блока. Так что попробуйте { … } поймать { … } наконец, {…} распространено, по крайней мере, в моем мире.