如何在android中检查asynctask中的互联网连接

时间:2013-03-08 05:58:25

标签: android 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(); // 
    }   

如果互联网不可用,我想打开警报,还要检查响应是否有时间。显示它是否可行?帮助我。我的asynctask代码是新的 GetVideoUrlAsyn()。execute(); 方法..

4 个答案:

答案 0 :(得分:8)

在执行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;
    }
}

callhttppost_numvaluepair(URL, nameValuePairs)类的方法WebServiceCall

中执行此类操作
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

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

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

答案 1 :(得分:1)

您应该使用其他SO答案中提到的广播接收器,但由于您已经问过如何执行此操作,请转到此处:

 * Checks for an existing network connectivity
 * 
 * @param context
 *            The {@link Context} which is needed to tap
 *            {@link Context#CONNECTIVITY_SERVICE}
 * @return True if network connection is available
 */
public static boolean isNetworkAvailable(Context context) {
    ConnectivityManager connectivity = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (int i = 0; i < info.length; i++) {
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}

需要在清单文件中指定其他权限

答案 2 :(得分:0)

在执行asyncTask之前检查互联网

if(checkNetwork)
{
new GetVideoUrlAsyn().execute();    
}
else
{
 // do stuff
}

答案 3 :(得分:0)

if(CheckNetwork){
new GetVideoUrlAsyn().execute();
}else{
// Check internet connection
}

private boolean CheckNetwork() {
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getActiveNetworkInfo() != null
            && conMgr.getActiveNetworkInfo().isAvailable()
            && conMgr.getActiveNetworkInfo().isConnected()) {
        return true;
    } else {
        return false;
    }

}