私の問題は次のとおりです。インターネットに接続されていないときにボタンまたはアクティビティ全体をブロックし、インターネット接続に戻ったときにブロックを解除するようにします。私はBroadcastReceiverを使用してメインアクティビティでインターネットをチェックしていますが、うまく機能しています。
public class MainActivity extends BroadCast {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.registerReceiver(this.mConnReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
// code
}
MainActivityをブロックするには、メソッドsetCancelableをfalseに設定してProgressDialogを使用しています。BroadCastアクティビティ:
public class BroadCast extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
public BroadcastReceiver mConnReceiver = new BroadcastReceiver()
{
public void onReceive(Context context, Intent intent)
{
@SuppressWarnings("deprecation")
NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if(currentNetworkInfo.isConnected()) {
BlockActivity(true);
}
else {
BlockActivity(false);
}
}
};
public void BlockActivity(Boolean connected)
{
final ProgressDialog pausingDialog = ProgressDialog.show(this, "", "Application waiting for internet connection...");
if (!connected)
{
Toast.makeText(getApplicationContext(), "Disconnected", Toast.LENGTH_LONG).show();
pausingDialog.show();
pausingDialog.setCancelable(false);
}
else
{
Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
pausingDialog.setCancelable(true);
pausingDialog.dismiss();
}
}
}
トースト情報はうまく機能しますが、問題はProgressDialogにあります。インターネット接続がなくなると表示されますが、インターネット接続が戻ったときに消えたくありません。それを修正する方法は?ありがとう。