如何在android中的asynctask中检查互联网连接 [英] how to check internet connection in asynctask in android

查看:55
本文介绍了如何在android中的asynctask中检查互联网连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

@Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.videoview);


        mVideoView = (VideoView) findViewById(R.id.videoView1);
        scanCode = getIntent().getExtras().getString("ScanCode");


         new GetVideoUrlAsyn().execute();               


        mVideoView.setOnCompletionListener(new OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                // TODO Auto-generated method stub

                startActivity(new Intent(getBaseContext(),
                        PostVideoMenuActivity.class));              
            }
        });
    }   
    private class GetVideoUrlAsyn extends AsyncTask<Void, Void,Void> {

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub          

            String URL = "http://www.storybehindthestore.com/sbtsws/service/saveinfo.asmx/StoryScanHistorySave";

            WebServiceCall webservice = new WebServiceCall();

            nameValuePairs = new ArrayList<NameValuePair>(4);               

            nameValuePairs.add(new BasicNameValuePair("iSiteID","1"));          
            nameValuePairs.add(new BasicNameValuePair("sVideoURL",scanCode));
            Log.e("scancode",""+ scanCode);
            nameValuePairs.add(new BasicNameValuePair("sDeviceID",SplashActivity.deviceId));
            Log.e("sDeviceID",""+ SplashActivity.deviceId);
            nameValuePairs.add(new BasicNameValuePair("sDeviceModel",SplashActivity.deviceModelName));
            Log.e("sDeviceModel",""+ SplashActivity.deviceModelName);

            responce = webservice.callhttppost_numvaluepair(URL, nameValuePairs);
        //  Log.e("Stiryscanstorysave responce", responce);         

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);

            //progressDialog.dismiss();         
            if (responce.contains("InCorrect QR Code !")) {

                AlertDialog adddrug1 = new AlertDialog.Builder(
                        VideoActivity.this)
                        .setTitle("Message")
                        .setMessage("InCorrect QR Code !")
                        .setPositiveButton("Ok",
                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog,
                                            int whichButton) {                                  

                                        startActivity(new Intent(getBaseContext(),
                                                HomeActivity.class));
                                    }

                                }).create();

                adddrug1.show();     

            }else {     

                StoryScanSaveListGet();                 
                mVideoView.setVideoURI(Uri.parse(scanCode));                      
                mVideoView.setMediaController(new MediaController(VideoActivity.this));
                mVideoView.requestFocus();          
                mVideoView.start(); 

            }
        }

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            /*progressDialog = new ProgressDialog(VideoActivity.this);          
            progressDialog.setCancelable(false);
            progressDialog.show();  */  
        }       


        public void StoryScanSaveListGet() {
            // TODO Auto-generated method stub

            id.clear();
            site_id.clear();
            store_name.clear();
            store_url.clear();
            store_phone.clear();
            video_count.clear();

            try {

                JSONObject jmain = new JSONObject(responce);
                JSONArray jarray = jmain.getJSONArray("tblCustomer");

                JSONObject j_one = (JSONObject) jarray.get(0);

                Log.v("Responce", responce);

                for (int i = 0; i < jarray.length(); i++) {

                    j_one = (JSONObject) jarray.get(i);                         

                    id.add(j_one.get("id").toString());
                    site_id.add(j_one.get("site_id").toString());
                    store_name.add(j_one.get("store_name").toString());
                    store_url.add(j_one.get("store_url").toString());
                    store_phone.add(j_one.get("store_phone").toString());
                    video_count.add(j_one.get("video_count").toString());                                   
                }

                storeurl =j_one.get("store_url").toString();
                storephone = j_one.get("store_phone").toString();
                videocount = j_one.get("video_count").toString();
                storename = j_one.get("store_name").toString();

                Log.i("id", ""+ id);
                Log.i("site_id",  ""+ site_id);     
                Log.i("store_name", ""+ store_name);
                Log.i("store_url",  ""+ store_url);     
                Log.i("store_phone",  ""+ store_phone);
                Log.i("video_count", ""+ video_count);          


            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                responce = null;
            }
        }
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        Log.d("tag", "onPause called");
        super.onPause();
        stopPosition = mVideoView.getCurrentPosition(); // stopPosition is an
                                                        // int
        mVideoView.pause();

    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        Log.d("TAG", "onResume called");

        mVideoView.seekTo(stopPosition);
        mVideoView.start(); // 
    }   

hii我想在互联网不可用时打开警报,还要检查响应是否超时..怎么可能???帮帮我.这是我的asynctask代码,这是新的 GetVideoUrlAsyn().execute(); 方法..

hii i want to open alert if internet is not available and also check if response getting time out..how is it posible??? help me..here is my code of asynctask which is new GetVideoUrlAsyn().execute(); method..

推荐答案

在执行AsyncTask之前检查网络连接,

Check network connectivity before executing AsyncTask,

if(isNetworkAvailable(this))
{
new GetVideoUrlAsyn().execute();
}

这是方法的定义

    public boolean isNetworkAvailable(Context ctx)
{
    ConnectivityManager cm = (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()&& cm.getActiveNetworkInfo().isAvailable()&& cm.getActiveNetworkInfo().isConnected()) 
    {
        return true;
    }
    else
    {
        return false;
    }
}

WebServiceCall类的方法callhttppost_numvaluepair(URL, nameValuePairs)中做类似的事情,

do something like this inside your method callhttppost_numvaluepair(URL, nameValuePairs) of WebServiceCall class,

HttpParams basicparams = new BasicHttpParams();
URI uri = new URI(url);
HttpPost method = new HttpPost(uri);
int timeoutConnection = 60000;//set your timeout period
HttpConnectionParams.setConnectionTimeout(basicparams,
        timeoutConnection);
DefaultHttpClient client = new DefaultHttpClient(basicparams);
    //and then rest of your code

注意: 不要忘记将权限放入清单文件中,

Note: Don't forget to put the permission in manifest file,

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

这篇关于如何在android中的asynctask中检查互联网连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆