Nano Hash - криптовалюты, майнинг, программирование

как проверить подключение к интернету в asynctask в android

@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(); // 
    }   

Привет, я хочу открыть оповещение, если Интернет недоступен, а также проверить, не истек ли срок ответа.. как это возможно??? помогите мне... вот мой код асинхронной задачи, который представляет собой новый метод GetVideoUrlAsyn().execute();..



Ответы:


1

Проверьте подключение к сети перед выполнением 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" />
08.03.2013
  • @ User117: привет, не стесняйтесь, дайте мне знать о ненужных. 08.03.2013

  • 2

    Вы должны использовать широковещательный приемник, как указано в других ответах 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;
    }
    

    Потребуется дополнительное разрешение, которое будет указано в файле манифеста.

    08.03.2013

    3

    проверьте интернет перед выполнением asyncTask

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

    4
    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;
        }
    
    }
    
    08.03.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..