首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在SplashScreen期间检查互联网

在SplashScreen期间检查互联网
EN

Stack Overflow用户
提问于 2016-06-02 04:29:41
回答 5查看 6.4K关注 0票数 1

嗯,在我的SplashScreen屏幕之后。我的应用程序将检查互联网连接。如果有可用的互联网,它将呼叫WebView。否则,它将调用一个错误的活动。

但我如何配对,以检查互联网在SplashScreen期间?

活动闪屏:

代码语言:javascript
复制
public class Splash extends Activity{

    private static int tempo_splash = 1000;

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

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // Para o layout preencher toda tela do cel (remover a barra de tit.)

        new Timer().schedule(new TimerTask() {

            public void run() {
                finish();

                Intent intent = new Intent();
                intent.setClass(Splash.this, MainActivity.class); //Chamando a classe splash e a principal (main)
                startActivity(intent);
            }
        }, 2000);

    }

}

MY CLASS CheckINTERNET:

代码语言:javascript
复制
public class CheckInternet extends Activity{

    boolean status = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.internet);

        Button btnStatus = (Button) findViewById(R.id.check_btn);
        btnStatus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                status = checkInternetConnection();

                if (status) {

                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            final Intent mainIntent = new Intent(CheckInternet.this, MainActivity.class);
                            CheckInternet.this.startActivity(mainIntent);
                            CheckInternet.this.finish();
                        }
                    }, 5000);

                }
                else {
                    Toast.makeText(getApplicationContext(), "You don't have Internet connection. Try Again", Toast.LENGTH_LONG).show();

                }
            }
        });
    }


    public boolean checkInternetConnection() {

        ConnectivityManager connectivity = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);

        if (connectivity != null) {
            NetworkInfo[] inf = connectivity.getAllNetworkInfo();
            if (inf != null) {
                for (int i = 0; i < inf.length; i++) {
                        return true;
                }
            }
        }
        return false;
    }

}
EN

回答 5

Stack Overflow用户

发布于 2016-06-02 13:01:45

试试这段代码。也许能帮到你

代码语言:javascript
复制
public class SplashScreen extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.splash_screen);

    if(isWorkingInternetPersent()){
        splash();
    }
    else{
        showAlertDialog(SplashScreen.this, "Internet Connection",
                "You don't have internet connection", false);
    }
}
public void splash() {
    Thread timerTread = new Thread() {
        public void run() {
            try {
                sleep(4000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                Intent intent = new Intent(getApplicationContext(), New_Main_Activity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                finish();
            }
        }
    };
    timerTread.start();
}
public boolean isWorkingInternetPersent() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getBaseContext()
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivityManager != null) {
        NetworkInfo[] info = connectivityManager.getAllNetworkInfo();
        if (info != null)
            for (int i = 0; i < info.length; i++)
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }

    }
    return false;
}
public void showAlertDialog(Context context, String title, String message, Boolean status) {
    AlertDialog alertDialog = new AlertDialog.Builder(context).create();

    // Setting Dialog Title
    alertDialog.setTitle(title);

    // Setting Dialog Message
    alertDialog.setMessage(message);

    // Setting alert dialog icon
    // alertDialog.setIcon((status) ? R.mipmap.ic_launcher : R.mipmap.ic_launcher);

    // Setting OK Button
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

            finish();
            System.exit(0);
        }
    });

    // Showing Alert Message
    alertDialog.show();
}
票数 3
EN

Stack Overflow用户

发布于 2016-06-02 04:43:31

你不应该仅仅为了检查连通性而打算这样做。我的建议是创建一个“实用程序”类-调用是MyConnectivityChecker,并在其中添加一个静态方法(isConnected),其中包含以下代码:

代码语言:javascript
复制
    public class MyConnectivityChecker {

        public static boolean  isConnected(Context context){
         boolean connected = false;
         ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
         NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
         NetworkInfo mobile = connectivityManager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);        
         connected = (wifi.isAvailable() && wifi.isConnectedOrConnecting() || (mobile.isAvailable() && mobile.isConnectedOrConnecting()));
         return connected;
    }
}

然后,在您的Splash活动中,只要您想要检查连通性,就可以像这样调用isConnected方法:

代码语言:javascript
复制
MyConnectivityChecker.isConnected(this)

例如,您可以这样做:

代码语言:javascript
复制
if(MyConnectivityChecker.isConnected(this)){
//connectivity available
}
else{
 //no connectivity
}

我希望这能帮到你。试一试,让我知道。

票数 0
EN

Stack Overflow用户

发布于 2016-06-02 12:55:43

你能做的就是检查你的SplashScreen定时器内部是否有网络连接。

代码语言:javascript
复制
new Timer().schedule(new TimerTask() {

    public void run() {
        if(isOnline()){

            Intent intent = new Intent(Splash.this,WebViewActivity.class);
            startActivity(intent);
            finish();

        }else{

             Intent intent = new Intent(Splash.this,ErrorActivity.class);
             startActivity(intent);
             finish();

        }
    }
}, 2000);

对于互联网检查,您可以使用此方法。

代码语言:javascript
复制
public boolean isOnline() {
    System.out.println("executeCommand");
    Runtime localRuntime = Runtime.getRuntime();
    try {
        int i = localRuntime.exec("/system/bin/ping -c 1 8.8.8.8")
                .waitFor();
        System.out.println(" mExitValue " + i);
        boolean bool = false;
        if (i == 0) {
            bool = true;
        }
        return bool;
    } catch (InterruptedException localInterruptedException) {
        localInterruptedException.printStackTrace();
        System.out.println(" Exception:" + localInterruptedException);
        return false;
    } catch (IOException localIOException) {
        localIOException.printStackTrace();
        System.out.println(" Exception:" + localIOException);
    }
    return false;
} 

注意:将此方法添加到SplashScreen中的onCreate()方法之外。

快乐的编码..

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37578201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档