2012-09-22 3 views
0

프로그램별로 .apk 파일을 다운로드 한 다음 해당 활동을 시작해야합니다. . 내가 사용하고 코드는 다음과 같은Android에서 다운로드 한 .apk 파일이 손상되었습니다.

private String downloadFile(String sourceURL, String destinationPath) 
    { 
     try { 
      URL url = new URL(sourceURL); 
      URLConnection connection = url.openConnection(); 
      connection.connect(); 

      // download the file 
      InputStream input = new BufferedInputStream(url.openStream()); 
      OutputStream output = new FileOutputStream(destinationPath); 

      byte data[] = new byte[1024]; 
      int count; 
      while ((count = input.read(data)) > 0) { 
       output.write(data, 0, count); 
      } 

      output.flush(); 
      output.close(); 
      input.close(); 

// 여기에 편집 : 파일 RW를 확인하십시오, 그렇지 않으면 APK 파일이 설치되지 않습니다 Runtime.getRuntime() 간부 ("chmod를 666"+의 DestinationPath) ;

  message = "OK"; 
     } 
     catch (MalformedURLException e) { 
      message = "Malformed URL error: " + e.getMessage(); 
     } 
     catch (ProtocolException e) { 
      message = "Protocol exception error: " + e.getMessage(); 
     } 
     catch (FileNotFoundException e) { 
      message = "File not found error: " + e.getMessage(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
      message = "Failed to download the file : " + e.getMessage(); 
     } 
     return message; 
    } 

내가 먼저 텍스트 파일과 그 다음 apk 파일을위한 메소드를 호출한다고 언급했습니다. 따라서 파일을 로컬에서 처리 할 때마다 어떻게 든 잘못되거나 잘못되었다는 것을 알게됩니다. 이 방법으로 나는 텍스트 파일이 올바르게 다운로드되었음을 안다. 그러나 .apk 파일이 손상되었습니다. DDMS와 로컬 호스트 (IP : 10.0.2.2)에 대한 액세스 권한을 가지고 로컬로 개발하기 때문에 나는 그 원인이 위의 코드라는 것을 확고하게 말할 수 있습니다. DDMS를 통해 원래의 .apk 파일로 인위적으로 '다운로드 한'파일을 대체하면 다음에 나오는 모든 처리가 정상적으로 처리됩니다. 또한 원본과 다운로드 한 .apk 파일을 비교할 때 별 차이가 있습니다. 내가 뭘 잘못하고 있니? 감사합니다. 추 신 : 검색 중, 인기있는 문제인 반면, 일관된 답이 없음을 깨달았습니다. 필자의 경우에는 다운로드 방법의 문제로 간주했습니다.

+0

서버가 APK를 바이너리로 보내고 있습니까? Content-Type 헤더의 값은 무엇입니까? – Rajesh

+0

흥미 롭습니다. setRequestProperty를 바이너리로 제안 하시겠습니까? 그렇다면 올바른 매개 변수는 무엇입니까 (오히려 응용 프로그램 형식 지향적 인 것 같습니다). connection.setRequestProperty ("content-type", "multipart/form-data")와 같은 것일 수 있습니까? –

+0

sourceURL의 유형은 무엇입니까? HTTP 요청입니까? 어디에서 파일을 다운로드하고 있습니까? 서버 코드에 Content-Type 헤더를 설정해야합니다. – Rajesh

답변

0

EDITED 줄 아래의 답변을 참조하십시오. 구현 된, 다른 사람들을 도울 수있는 잘 작동

관련 문제