2014-11-25 73 views
1

我目前正在做一个基于网络连接的项目。我正在开发一个应用程序,其中定期检查网络连接。如果没有连接,进度对话框应该旋转显示“没有网络连接“直到用户自己打开wifi或任何其他类型的互联网连接。在wifi打开之后,如果应用程序连接到wifi,则进度对话框应该关闭,并且控制应该传递给另一活动。我在谷歌搜索了很多次,但没有得到满意的答案。下面是我的代码:当检测到网络连接时开始另一个活动

 public class Alert extends Activity implements Runnable{ 


     ProgressDialog pd; 
    WifiManager wm,wifiManager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_alert); 


     wm = (WifiManager) getSystemService(WIFI_SERVICE); 

     if(!wm.isWifiEnabled()) { 
     pd = ProgressDialog.show(this, "Network Error!!", "Network not found.Please make sure there is presence of any kind of network connection!!"); 

     Thread t = new Thread(this); 
     t.start(); 
     } 
    } 

    @Override 
    protected void onResume() { 

     super.onResume(); 

     if(wm.isWifiEnabled()) { 
      pd.dismiss(); 
    Intent in=new Intent(Alert.this,WebPageView.class); 
      startActivity(in); 

     } 
    } 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 

      while(wm.getWifiState() != 3) { 

       try { 
        Thread.sleep(5000); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 

      } 
    } 
} 

回答

0

尝试这样使用处理程序,它可能工作。

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_alert); 


     wm = (WifiManager) getSystemService(WIFI_SERVICE); 

     Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     public void run() { 
     if(!wm.isWifiEnabled()) { 
     runOnUiThread(new Runnable() { 
       public void run() { 
       if(pd == null) 
        pd = ProgressDialog.show(this, "Network Error!!", "Network not found.Please make sure there is presence of any kind of network connection!!"); 
       } 
      }); 

     }else{ 
     runOnUiThread(new Runnable() { 
       public void run() { 
       if(pd != null) 
        pd.dismiss(); 
       Intent in=new Intent(Alert.this,WebPageView.class); 
       startActivity(in); 
       } 
      }); 


     } 
     handler.postDelayed(this, 5000); //now is every 2 minutes 
     } 
    }, 5000); 

    } 
+0

在5秒的间隔,它不断崩溃,并打开自己,并再次崩溃,如在一个循环 – 2014-11-25 07:20:24

+0

我编辑我的答案可以检查它并重播我。 – 2014-11-25 07:25:33

+0

感谢他的工作.. :) – 2014-11-25 08:31:43

0

检查这个link

取决于网络状态的改变,你可以打电话给你的活动。

希望这将解决您的问题

+0

似乎更像是评论,而不是回答 – 2014-11-25 06:45:50

+0

他正在定期检查互联网或其他网络。他可以立即检查互联网状态。这是检查互联网状态的正确方法。那么他可以调用具体的活动。 – Jeeva 2014-11-25 06:52:02

0
@Override 
public void run() { 
    // TODO Auto-generated method stub 

    while(running) { 

     try { 
    ConnectivityManager cm = (ConnectivityManager) 
    context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo info = cm.getActiveNetworkInfo(); 
     if (info != null) { 
      if (info.isConnected()) { 
       // you got a connection! tell your user! 
       Log.i("Post", "Connected"); 
       running=false; 
    runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
    // TODO Auto-generated method stub 
    pd.dismiss(); 
     } 
     }); 
       Intent intent_service=new Intent(this, anotherActivity.class); 
       context.startService(intent_service); 

      } 

     } 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

    } 
0

把你的项目这个类:

public class Utility { 
    public static boolean isNetworkConnected(Context context){ 
     boolean connected = false; 
     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     connected = (cm.getActiveNetworkInfo() != null&&cm.getActiveNetworkInfo().isAvailable() && cm 
      .getActiveNetworkInfo().isConnected()); 
     return connected; 
    } 
    public static void showAlert(final Activity activity, final String message,final String title) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
     builder.setMessage(message).setTitle(title).setCancelable(false) 
      .setNegativeButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog,int id){ 
        dialog.cancel(); 
        activity.finish(); 
       } 
      }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 
    public static void showAlertValidation(final Activity activity,final String message,final String title){ 
     AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
     builder.setMessage(message).setTitle(title).setCancelable(false) 
      .setNegativeButton("OK", new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog,int id){ 
        dialog.cancel(); 
       } 
      }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 
} 

此类检测,如果你的网络连接是与否。之后,在您的活动,把下面的代码:

if(Utility.isNetworkConnected(Alert.this)) 
    { 
Intent in=new Intent(Alert.this,WebPageView.class); 
      startActivity(in); 
} 
      else if(!Utility.isNetworkConnected(Alert.this)) 
       Utility.showAlert(Alert.this,"Internet Connection Not Present.","Network Error!"); 

检查,看看你的问题得到解决或没有。

1
To check network connection, use ConnectivityManager class. 
Add below method to your activity and call it to check network connection, if it returns true then it means network is available otherwise not. 

private boolean isNetworkAvailable(Context context) { 
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 

Now do it in your onCreate(...) method 

if(!isNetworkAvailable(Alert.this)) { 
    pd = ProgressDialog.show(this, "Network Error!!", "Network not found.Please make sure there is presence of any kind of network connection!!"); 
    Thread t = new Thread(this); 
    t.start(); 
}else{ 
    if(pd != null && pd.isShowing()){ 
     pd.dismiss(); 
    } 
    Intent in=new Intent(Alert.this,WebPageView.class); 
    startActivity(in); 
} 

Hope this will help you.