2015-10-27 3 views
-1

Всякий раз, когда я пытаюсь получить текстовый документ из Dropbox, содержащего строку версии, он говорит, что он равен null, хотя он должен равняться 0.6.48. Я пробовал много разных способов получить файл, но он всегда возвращал null. Код:Чтение содержимого текстового документа из URL всегда равно нулю

new Thread() { 
      public void run() { 
       try { 
        URL textUrl = new URL(UPDATE_API); // UPDATE_API = "https://dl.dropboxusercontent.com/s/zjlxzypgqsxvtr0/version.txt?dl=1" 
        BufferedReader bufferReader = new BufferedReader(new InputStreamReader(textUrl.openStream())); 
        String StringBuffer; 
        String stringText = ""; 
        while ((StringBuffer = bufferReader.readLine()) != null) { 
         stringText += StringBuffer; 
        } 
        bufferReader.close(); 
        Soundboard.REMOTE_VERSION = stringText; 
       } catch (MalformedURLException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }.start(); 

Что мне не хватает? Я создаю API 23. Я положил <uses-permission android:name="android.permission.INTERNET"/> в свой манифест Android.

+0

Извините, но я ничего не вижу, что возвращает null. – greenapps

+0

@greenapps Всякий раз, когда я пытался распечатать значение, он всегда говорил 'Caused by: java.lang.NullPointerException: println нуждается в сообщении' – Spideynn

+0

Значение чего? Лучше добавьте этот оператор печати, чтобы мы увидели, что вы делаете. – greenapps

ответ

1

Ваш код работал для меня с некоторыми изменениями:

String UPDATE_API = "https://dl.dropboxusercontent.com/s/zjlxzypgqsxvtr0/version.txt?dl=1"; 
    private BufferedReader bufferReader = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


    new Thread() { 
     public void run() { 
      try { 
       URL textUrl = new URL(UPDATE_API); 
       bufferReader = new BufferedReader(new InputStreamReader(textUrl.openStream())); 
       String StringBuffer = ""; 
       StringBuilder stringText = new StringBuilder(); 
       while ((StringBuffer = bufferReader.readLine()) != null) { 
        stringText.append(StringBuffer); 
       } 

       Log.d("--->", stringText.toString()); 
       Soundboard.REMOTE_VERSION = stringText; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       try { 
        bufferReader.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }.start(); 
} 

Попытка закрыть BufferedReader в try..finally.
Используйте StringBuilder, а не String для конкатенации

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