次のコードを使用してAPI呼び出しを行い、受信した応答に基づいてユーザーをページに誘導しています。インターネット接続を確認するにはどうすればよいですか?
OK HTTPクライアントを使用していますが、コードは次のようになります。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String url = "https://xxxxxxxx/" + orderLineId;
JSONObject jSon = new JSONObject();
try {
jSon.put("prescription_xxxxx", prescriptionIntervalId);
jSon.put("prescription_xxxxxxx", false);
} catch (JSONException e) {
e.printStackTrace();
}
String data = jSon.toString();
RequestBody body = RequestBody.create(JSON, data);
Request request = new Request.Builder()
.url(url)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", token)
.addHeader("Accept", "application/json")
.put(body)
.build();
client.newCall(request).enqueue(new Callback() {@Override
public void onFailure(Request request, IOException e) {
AlertDialog.Builder dialog = new AlertDialog.Builder(AutoRefillActivity.this);
dialog.setMessage("Something went wrong. Check connection.")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
onBackPressed();
}
});
AlertDialog alert = dialog.create();
alert.show();
}
@Override
public void onResponse(Response response) throws IOException {
if(response.code()==401){
AlertDialog.Builder dialog = new AlertDialog.Builder(AutoRefillActivity.this);
dialog.setMessage("Device was idle for too long please login again.")
.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
onBackPressed();
}
});
AlertDialog alert = dialog.create();
alert.show();
}
else {
Intent paymentSummary = new Intent(AutoRefillActivity.this,PPPaymentSummaryActivityNew.class);
paymentSummary.putExtra(PPPaymentSummaryActivityNew.EXTRA_ORDER,String.valueOf(orderLineId));
paymentSummary.putExtra("order_line_id",orderLineId);
paymentSummary.putExtra(PPPaymentSummaryActivityNew.EXTRA_CATEGORY_CODE,categoryCode);
paymentSummary.putExtra("prescriptionIntervalId",prescriptionIntervalId);
paymentSummary.putExtra("available",available);
paymentSummary.putExtra("token",token);
Bundle newBundle = new Bundle();
newBundle.putParcelable(PPPaymentSummaryActivityNew.EXTRA_PRODUCT,product);
paymentSummary.putExtras(newBundle);
startActivity(paymentSummary);
}
}
非同期リクエストのonFailureにアラートボックスを入れましたが。それは動作しません。それでもインターネットをオフにでき、アプリがクラッシュします。これに対する解決策はありますか?
次の方法で、インターネットが利用可能かどうかを判断します
/**
*
* @param context
* @return true if connected to Internet
*
*/
public static boolean isNetworkAvailable(final Context context) {
final ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null) return false;
final NetworkInfo networkInfo = cm.getActiveNetworkInfo();
// if no network is available networkInfo will be null
// otherwise check if we are connected
return (networkInfo != null && networkInfo.isConnected());
}
次に、そのようなWebサービスを実行します
if(isNetworkAvailable(context)){
//do something
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加