2011-08-21 6 views
2

URL 클래스를 사용하여 Android 작업 공간의 파일에서 텍스트를 읽는 데 문제가 있습니다. NetworkOnMainThreadException이 발생합니다. 동일한 정확한 코드는 Android 작업 영역 외부에서 작동하므로 네트워크 또는 권한 문제 여야합니다. 지정된 링크에서 기본 텍스트 파일을 생성했습니다. url.openStream에서 오류가 발생한 것 같습니다. 다음은 내 매니페스트 파일 다음에 내 코드, (나는 이미 사용-권한 라인을 추가했습니다.)Android에서 URL을 읽을 수 없음

static public String[] barList() 
{ 
    ArrayList<String> bars = new ArrayList<String>(); 
    try{ 
     URL url = new URL("****"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); 
     String line = br.readLine(); 
     while(line != null) 
     { 
      bars.add(line); 
      line = br.readLine(); 
     } 
     br.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return (String[])bars.toArray(); 
} 

여기에 매니페스트 파일입니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="aexp.explist"> 
<application> 
    <activity android:name=".ExpList" android:label="ExpList"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
</manifest> 
+1

무슨 일이 있었는지 암시 예외입니다 :-)하는 데 도움이? 'e.getMessage()' – Mike

+0

어떤 이유로 프로그램을 디버깅 할 때 예외가 잡히지 않습니다. 나를 catch 블록으로 데려가는 대신 "Class.class"파일로 이동합니다. – Glockstock

+1

이런 일이 발생하고 DDMS 퍼스펙티브에 있으면 녹색 "재생"버튼을 클릭하여 계속 진행하십시오. 필요한 경우이 작업을 몇 번 수행하면 마지막으로 LogCat 탭에서 스택 추적을 확인해야합니다. 그건 그렇고, 난 인터넷에 대해서만 내 에뮬레이터에서 코드를 테스트하고 오류가 발생하지 않았다. – Mike

답변

0

어쩌면 스트림을 압축된다 GZIPInputStream fails with IOException in Android 2.3, but works fine in all previous releases?

당신은 당신이 URL의 내용을 읽을 수, 버퍼 입력 스트림을 사용하지 않는 경우?

또한 url.getContent를 사용하여 입력 스트림으로 캐스팅하는 경우가 있는데, url.openStream에 익숙하지 않습니다.

감사합니다, 스테판

+0

추가 검사에서 url.openStream에서 오류가 발생합니다. 따라서 실패하기 전에 BufferedInput 코드에 도달하지도 않습니다. 사용하려고하면 (InputStream) url.getContent가 작동하지 않습니다. 아마도 권한 문제가 될 것 같습니다. 아마도 https 웹 사이트에서 읽는 중입니까? – Glockstock

+0

io 예외가 아닌 사용 권한 예외가 발생합니다. 어쨌든, 귀하의 앱에 인터넷 사용 권한을 부여하면 안됩니다. – Snicolas

0

귀하의 코드는 내가에 붙여 내 현재 프로젝트에서 실행하는 경우 예외를 throw하지 않고 올바르게 실행됩니다. 나는 sdk 4-8을 목표로하고있다.

관련 문제