2014-09-17 2 views
0

Я хочу проверить обновление приложения; Я использую эту функцию, но она не работает и идет, чтобы поймать первую и вторую попытку. в чем проблема?не может загрузить URL-адрес с android

вы можете увидеть некоторые журнал о нем, когда необходимо загрузить страницу:

http://pasteboard.co/hn2hx7t.png

void CheckForUpdate() 
     { 
      handler.post(new Runnable() { 

       @Override 
       public void run() { 

        try 
        { 
         URL versionURL = new URL("http://sth.com/daycounter/moharam_day_counter.php?p=widget_version_code"); 
         URL widgetURL = new URL("http://sth.com/daycounter/moharam_day_counter.php?p=widget_url"); 
         URLConnection urlConnection = versionURL.openConnection(); 

         BufferedReader bufferReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 

         String version = bufferReader.readLine(); 
         Log.i("WP", ""+version); 

         if(Integer.parseInt(version) >= Integer.parseInt(versionCode)) 
         { 

          bufferReader.close(); 
          urlConnection = widgetURL.openConnection(); 
          bufferReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
          String widgetURLString = bufferReader.readLine(); 
          Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(widgetURLString)); 
          ShowNotifyCation("", "***", intent, 1, R.drawable.icon_image, R.raw.alarm_sound); 

         } 
         bufferReader.close(); 
        } 
        catch(Exception e) 
        { 
         e.printStackTrace(); 
        } 
        if(!GetIsShowBeheshtNote()) 
        { 
         try 
         { 


           URL beheshtIsCommingURL = new URL("http://http://sth.com/daycounter/moharam_day_counter.php?p=behesht_is_coming"); 
           URL beheshtURL = new URL("http://sth.com/daycounter/moharam_day_counter.php?p=behesht_url");     
           BufferedReader bufferReader = new BufferedReader(new InputStreamReader(beheshtIsCommingURL.openStream())); 
           String isComing = bufferReader.readLine(); 
           if(Boolean.parseBoolean(isComing)) 
           { 
            bufferReader.close(); 
            bufferReader = new BufferedReader(new InputStreamReader(beheshtURL.openStream())); 
            String beheshtURLString = bufferReader.readLine(); 
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(beheshtURLString)); 
            ShowNotifyCation("", ******", intent, 2, R.drawable.icon_image, R.raw.alarm_sound); 
            SetIsShowBeheshtNote(); 


           } 
           bufferReader.close(); 
         } 
         catch(Exception e) 
         { 

         } 
        } 
       } 
      }); 
     } 

ответ

1

Вы делаете сетевые запросы на главном потоке. Основной поток посвящен операциям пользовательского интерфейса, поэтому андроид принуждает вас использовать AsynTasks или Threads.

Создать новую AsyncTask и добавьте скачать логику doInBackground метода и использовать результат в onPostExecute

Пример из Google: http://developer.android.com/training/basics/network-ops/connecting.html

private class DownloadWebpageTask extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... urls) { 

     // params comes from the execute() call: params[0] is the url. 
     try { 
      return downloadUrl(urls[0]); 
     } catch (IOException e) { 
      return "Unable to retrieve web page. URL may be invalid."; 
     } 
    } 
    // onPostExecute displays the results of the AsyncTask. 
    @Override 
    protected void onPostExecute(String result) { 
     textView.setText(result); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^