別のクラスを開く onclick イベントを持つボタンがあります。他のクラスはデータを取得するためにネットワーク呼び出しを行っているため、接続がない場合、アプリは強制的に閉じられます。
データ接続を確認できる try catch または if ステートメントを実装するにはどうすればよいでしょうか。データ接続がない場合は、そう言うトーストを表示します。ある場合は、2 番目のクラスに進みます。
別のクラスを開く onclick イベントを持つボタンがあります。他のクラスはデータを取得するためにネットワーク呼び出しを行っているため、接続がない場合、アプリは強制的に閉じられます。
データ接続を確認できる try catch または if ステートメントを実装するにはどうすればよいでしょうか。データ接続がない場合は、そう言うトーストを表示します。ある場合は、2 番目のクラスに進みます。
私が使う:
public boolean isOnline() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
インターネット接続を確認するには、次のようにします。
static public boolean isInternetActive()
{
ConnectivityManager connectivity = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = (NetworkInfo) connectivity.getActiveNetworkInfo();
if (info == null || !info.isConnected())
{
return false;
}
if (info.isRoaming())
{
return false;
}
return true;
}
public boolean isOnline() {
ConnectivityManager cm =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null &&
cm.getActiveNetworkInfo().isConnectedOrConnecting();
}
また、次のものが必要です。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
あなたのアンドロイドマニフェストで。
このコードは、インターネット接続がオンかオフかをチェックし、wifi と phone net をチェックします。
public boolean CheckInternet()
{
ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
// Here if condition check for wifi and mobile network is available or not.
// If anyone of them is available or connected then it will return true, otherwise false;
if (wifi.isConnected()) {
return true;
} else if (mobile.isConnected()) {
return true;
}
return false;
}
マニフェスト ファイル::
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
これを試してみてください、これはあなたを助けるでしょう..
public class CheckNetworkInfo {
public static boolean haveNetworkConnection(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
// test for connection
if (cm.getActiveNetworkInfo() != null
&& cm.getActiveNetworkInfo().isAvailable()
&& cm.getActiveNetworkInfo().isConnected()) {
Log.v("Yeah", "Internet is working");
// txt_status.setText("Internet is working");
return true;
} else {
// txt_status.setText("Internet Connection Not Present");
Log.v("Sorry", "Internet Connection Not Present");
return false;
}
}
// ネットワークの可用性をチェックしたい場所で上記のクラスの静的メソッドを呼び出します
class Myactivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
if(CheckNetworkInfo.haveNetworkConnection(Myactivity.this)){
startActivity(new Intent(HomePage.this,SearchTerm.class));
}
else{
AlertDialog.Builder a=new AlertDialog.Builder(Myactivity.this);
a.setTitle("Check Network Connection");
a.setPositiveButton("OK",new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
a.show();
}
}
}
単にそれを使用してください。
このコードをどこからでも呼び出して、ネットワークの現在の状態を返します。
public static boolean isInternetAvailable(Context c)
{
ConnectivityManager connectivityManager
= (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.getState() == NetworkInfo.State.CONNECTED;
}
接続されている場合は true、そうでない場合は false を返します。その出力に対して必要なアクションを実行します。
注: これは静的メソッドです。したがって、Android Activity クラス内から呼び出すだけの場合は、static キーワードを削除してください。