من کدهایتان را در پروژه اندروید تست کردم (این بار برای اینکه ببینم درست اتصال اینترنت رو تشخیص میده یا نه). با مواردی که مورد بحث ما بود، مشکلی نداشت و در حالتی هم که به اینترنت متصل بودیم، درست کار می کرد، اما برای حالتی که من گوشیم را از شبکه wireless قطع می کردم، برنامه force close می داد. چون کدها شبیه کدهایی بود که من در سایت قرار داده بودم، قبلا فکر می کردم که عینا آنها را در پروژه اندروید خود قرار داده اید، اما اینگونه نبود و با تغییر دادن آنها، مشکلاتی به وجود آمده بود. بنابراین بنده بر اساس کلید زیر، کدها را تکمیل کردم :
http://www.kelidestan.com/keys/keys.php?key=2408
که البته قبلا اصل کدهای آن را در کلید زیر شرح داده بودیم (روش اول در این کلید) :
http://www.kelidestan.com/keys/keys.php?key=287
بنابراین بنده کل پروژه اندرویدی که ساختم و آن را در دو حالت وصل به اینترنت و عدم اتصال به اینترنت تست کرده ام را برایتان در پیوست این ارسال قرار دادم تا خودتان کدهای آن را بررسی کنید (نحوه اجرای کدهای آن مشخص است). فایل apk ساخته شده از آن را هم پیوست کرده ام.
اما بد نیست که خود کدها رو هم اینجا بنویسم :
کدهای کلاس (نام آن با کلاس شما فرق دارد) :
کدهای Activity اصلی برنامه اندروید :
کدها را با دقت بررسی کنید. همچنین برنامه اندروید را هم در دو حالت اتصال و عدم اتصال به اینترنت چک کنید.
http://www.kelidestan.com/keys/keys.php?key=2408
که البته قبلا اصل کدهای آن را در کلید زیر شرح داده بودیم (روش اول در این کلید) :
http://www.kelidestan.com/keys/keys.php?key=287
بنابراین بنده کل پروژه اندرویدی که ساختم و آن را در دو حالت وصل به اینترنت و عدم اتصال به اینترنت تست کرده ام را برایتان در پیوست این ارسال قرار دادم تا خودتان کدهای آن را بررسی کنید (نحوه اجرای کدهای آن مشخص است). فایل apk ساخته شده از آن را هم پیوست کرده ام.
اما بد نیست که خود کدها رو هم اینجا بنویسم :
کدهای کلاس (نام آن با کلاس شما فرق دارد) :
کد:
package com.kelidestan.newclass;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import junit.framework.TestCase;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.widget.Toast;
public class MyClass extends TestCase {
public Context context;
public MyClass (Context context) {
this.context = context;
}
public void ShowAlertDialog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this.context);
alertDialog.setTitle("Title");
alertDialog.setMessage("No Internet");
alertDialog.setIcon(R.drawable.ic_launcher);
// Setting Positive "Yes" Button
alertDialog.setPositiveButton("Yes (repeat check internet)",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
new NetCheck().execute();
}
});
// Setting Negative "NO" Button
alertDialog.setNegativeButton("No (cancel)",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Write your code here to invoke NO event
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
/**
* Async Task to check whether internet connection is working.
**/
private class NetCheck extends AsyncTask<String,String,Boolean>
{
private ProgressDialog nDialog;
@Override
protected void onPreExecute(){
super.onPreExecute();
nDialog = new ProgressDialog(context);
nDialog.setTitle("Checking Network");
nDialog.setMessage("Loading..");
nDialog.setIndeterminate(false);
nDialog.setCancelable(true);
nDialog.show();
}
/**
* Gets current device state and checks for working internet connection by trying Google.
**/
@Override
protected Boolean doInBackground(String... args){
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
try {
URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();
if (urlc.getResponseCode() == 200) {
return true;
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return false;
}
@Override
protected void onPostExecute(Boolean th){
if(th == true){
nDialog.dismiss();
Toast.makeText(context.getApplicationContext(), "Your device is connected to internet !", Toast.LENGTH_SHORT).show();
context.startActivity(new Intent(context, MyActivity.class));
// new GetData().execute();
}
else{
nDialog.dismiss();
ShowAlertDialog();
}
}
}
public void CheckInternet() {
new NetCheck().execute();
}
}
کدهای Activity اصلی برنامه اندروید :
کد:
package com.kelidestan.newclass;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyClass myClass = new MyClass(this);
myClass.CheckInternet();
}
}
کدها را با دقت بررسی کنید. همچنین برنامه اندروید را هم در دو حالت اتصال و عدم اتصال به اینترنت چک کنید.
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.