سؤال

لدي عمل على التطبيق الذي يستخدم الإنترنت.

  • أنه يحتوي على تحليل XML من عنوان URL. من
  • إظهار حوار التقدم أثناء تحليل الوقت.
  • توقف عن الحوار عند الانتهاء من التحليل.
  • تعيين النص (البيانات) في ListView.

مشكلتي هي أنه عندما يكون الجهاز متصلاً بالإنترنت أكثر من تطبيقاتي تعمل بشكل جيد ولكن عندما لا يكون الجهاز متصلاً بـ "مربع حوار التقدم" على الإنترنت يعمل لفترة لا حصر لها.

أريد إيقاف الحوار إذا لم يكن الجهاز متصلاً بالإنترنت أو WiFi. كيف نفعل ذلك؟
اي فكرة؟ آسف يا رفاق .... لقد قمت بتغيير رأيي أريد التحقق من اتصال الإنترنت عند النقر فوق الزر. ما جربته حتى الآن هو ..

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.homelayout);
        mclip = (ImageButton) findViewById(R.id.clip);
        mclip.setClickable(true);
        mclip.setFocusable(true);

        mclip.setOnClickListener(new OnClickListener() {

            public void onClick(View view) {
                ConnectivityManager cm = (ConnectivityManager)              getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo netInfo = cm.getActiveNetworkInfo();
                if (netInfo != null && netInfo.isConnectedOrConnecting()) {
               //if it is connected to internet than start Another Activity.
                startActivity(new Intent(ListViewExample.this, ClipOfDay.class));
                } else if (netInfo == null) {
                    AlertDialog alertDialog = new AlertDialog.Builder(ListViewExample.this).create();
                    alertDialog.setTitle("Connection Problem");
                    alertDialog.setMessage("You are not connected to Internet");
                    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int which) {
                            return;
                        }
                    });
                    alertDialog.show();
                }

            }
        });
       }

ولكن هذا لا يعمل. إذا لم يكن الجهاز متصلاً بالإنترنت مما أرغب في إظهار AlertDialog. وإلا فإنه سيبدأ النشاط. هل يمكن لأي شخص أن يخبرني ماذا أفعل؟
شكرًا.

هل كانت مفيدة؟

المحلول

تحقق من اتصال الشبكة
رمز بسيط للتحقق من الاتصال

ConnectivityManager cMgr = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cMgr.getActiveNetworkInfo();
            String status = netInfo.getState().toString();
            if (status.equals("CONNECTED")) {
               //DO you work
            } else {
                Log.e("error", "No connection available ");
            }

نصائح أخرى

استخدم هاتين الطريقتين للتحقق من الاتصال:

Context.getSystemService(Context.CONNECTIVITY_SERVICE).getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
Context.getSystemService(Context.CONNECTIVITY_SERVICE).getNetworkInfo(ConnectivityManager.TYPE_WIFI)

ثم تحليل النتائج التي تم إرجاعها لمعرفة ما إذا كان الاتصال متاحًا. إذا كان متاحًا ، فعليك القيام بالأشياء فقط ووضع مربع الحوار.

بدلاً من ذلك ، يمكنك أيضًا تشغيل مربع الحوار ، وقبل القيام بأي إجراء شبكة ، تحقق من الاتصال بهذه الطرق ، وإذا لم يكن الاتصال متاحًا ، فاختب/إلغاء مربع الحوار وعرض رسالة خطأ. آخر ، اذهب لإجراء الشبكة. ونعم ، دائمًا ما يكون لديك كتلة تجرب.

  • تحقق أولاً مما إذا كان الإنترنت أو WiFi متصلاً ، ثم قم بتشغيل الرمز الخاص بك
  • استخدم Try ، catch ، في حالة حدوث بعض الاستثناء بسبب خطأ في الاتصال ، قم بإزالة مربع الحوار في كتلة الصيد.



يمكن أن تكون هذه طريقة واحدة للقيام بذلك ..............
أتمنى أن يساعد .......

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top