2017-12-31 27 views
-1

이 코드를 실행하면 Input stream in =url.openstream에 오류가 발생합니다. 도와주세요. 이url.openstream 사용 방법

내가 추가 한 인터넷쓰기를 해결하고 매니페스트

에 허가를 읽고 난 createmethod 에 내가 doInbackground에서 url.openstream하지만 여전히 오류

을 받고 시도에 asyncktask의 인스턴스를 생성하려면

asyncktask 클래스가 없으면 Java 프로그램에서 실행했습니다. 그러나 안드로이드에서 당신은 UI 스레드에서 실행되는, onPostExecute()url.openStream()를 실행하는

private class Mine extends AsyncTask<Void,Void,Void> 
{ 
    @Override 
    protected void onPreExecute() { 
     Toast.makeText(getApplicationContext(),"its loading",Toast.LENGTH_LONG).show(); 
     super.onPreExecute(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 


     try { 
      Document doc=Jsoup.connect(addr).get(); 
      come=doc.title(); 
      Elements image=doc.getElementsByTag("img"); 

      for(Element thereimage:image) 
      { 
       thereimagelink=thereimage.attr("abs:src"); 
      } 
      int indexname = thereimagelink.lastIndexOf("/"); 

      if(indexname==thereimagelink.length()) 
      { 
       thereimagelink=thereimagelink.substring(1,indexname); 
      } 
      indexname = thereimagelink.lastIndexOf("/"); 
      hereimagename=thereimagelink.substring(indexname,thereimagelink.length()); 







     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     //Toast.makeText(getApplicationContext(),""+come,Toast.LENGTH_SHORT).show(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 

     try { 

      URL url=new URL(thereimagelink); 
      InputStream in=url.openStream(); 

      OutputStream out=new BufferedOutputStream(new FileOutputStream(folder+hereimagename)); 
      for (int b; (b = in.read()) != -1;) { 

       out.write(b); 

      } 
      out.close(); 

      in.close(); 

     }catch (IOException e) 
     { 

     } 
     Toast.makeText(getApplicationContext(),"its finishd",Toast.LENGTH_LONG).show(); 




     super.onPostExecute(aVoid); 
    } 
+1

오류 세부 정보를 추가 할 수 있습니까? – ghosh

답변

1

작동하지 않습니다. Android에서는 모든 네트워크 작업이 백그라운드 스레드에서 수행되어야하므로 모든 작업이 백그라운드에서 수행되어야합니다. doInBackground()

+0

백그라운드에서 모든 코드 출력 스트림을 넣어야한다고 말하고 있습니까? – user9151828

+0

네트워크 연결을 열고 인터넷에서 데이터를 가져 오는 경우 예입니다. 그렇지 않으면 문제가 무엇인지 알 수 있도록 오류 로그를 추가해야합니다. –

+0

다른 사람들이 유익 할 수 있도록 대답을 수락하십시오. –