2014-01-06 6 views
0

저는 처음 엔 안드로이드를 처음 사용했습니다. 내 응용 프로그램에서 PDF 양식 URL을 다운로드하려고하지만 다운로드되지 않습니다. 나는 정말 이걸로 엉망이 됐어. 나는 내가 무엇을 놓치고 있는지, 왜 이것이 나를 위해 일하지 않는지를 모른다. 이 일을 도와주세요. 여기PDF가 다운로드되지 않습니다. url

난 내 코드를 붙여 오전 : (귀하의 경우 DownloadFile)는 AsyncTask를 위해서는

public class ProductBrochureActivity extends Activity { 
private static String cookie; 
private static String nid; 
WebView webViewForBrochureAndVideo; 
private String prodBrochureURL; 
private String prodVideoURL; 
private static int clickedItemId; 
ActionBar actionBar; 
private static HashMap<String, String> cookieWithRequest = new HashMap<String, String>(); 

static Object json; 


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

    actionBar = getActionBar(); 
    actionBar.hide(); 

    Intent intent = getIntent(); 
    cookie = intent.getStringExtra(BsharpConstant.WEB_SERVICES_COOKIES); 
    nid = intent.getStringExtra(BsharpConstant.PRODUCT_NODE_ID); 
    clickedItemId = intent.getIntExtra(BsharpConstant.CLICKED_ITEM_ID, 0); 
    String jsonResponseFromWebservices = WebserviceBsharpUtil 
      .callWebServicesToGetTheProductBrochureAndVideo(cookie, nid); 
    urlFromResponse(jsonResponseFromWebservices); 

    cookieWithRequest.put(BsharpConstant.WEB_SERVICES_COOKIES, cookie); 

    switch (clickedItemId) { 
    case 0: 
     if (!prodBrochureURL.isEmpty()) { 
      try { 
       new DownloadFile(); 
      } catch (ActivityNotFoundException e) { 
       Toast.makeText(this, 
         "No Application Available to View PDF", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } else { 
      Toast.makeText(this, "No PDF is Attached with this Product", 
        Toast.LENGTH_SHORT).show(); 
     } 
     break; 
    case 1: 
     if (!prodVideoURL.isEmpty()) { 
      try { 
       new DownloadFile(); 
      } catch (ActivityNotFoundException e) { 
       Toast.makeText(this, 
         "No Application Available to View PDF", 
         Toast.LENGTH_SHORT).show(); 
      } 
      break; 
     } else { 
      Toast.makeText(this, "No Video is Attached with this Product", 
        Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

/** 
* GetTheBrochureAndAttachedVideoURL 
* 
* @param jsonResponse 
*/ 
public void urlFromResponse(String jsonResponse) { 
    try { 
     json = new JSONTokener(jsonResponse).nextValue(); 
     if (json instanceof JSONArray) { 
      JSONArray jsonArray = (JSONArray) json; 
      prodBrochureURL = jsonArray.getJSONObject(0).getString(
        BsharpConstant.PRODUCT_BROCHURE_URL); 
      prodVideoURL = jsonArray.getJSONObject(0).getString(
        BsharpConstant.PRODUCT_VIDEO_URL); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

} 

private class DownloadFile extends AsyncTask<Void, Void, String> { 

    @Override 
    protected String doInBackground(Void... params) { 
     String filename = "brochure.pdf"; 

     HttpURLConnection connection; 
     try { 
      URL url = new URL(prodBrochureURL); 
      connection = (HttpURLConnection) url.openConnection(); 
      connection.addRequestProperty(
        BsharpConstant.WEB_SERVICES_COOKIES, cookie); 
      connection.setDoOutput(true); 
      connection.connect(); 
     } catch (IOException e1) { 
      return e1.getMessage(); 
     } 

     File folderDir = new File(getExternalFilesDir("Bsharp_PDF") 
       + "/Download"); 

     File file = new File(folderDir, filename); 

     if (file.exists()) { 
      file.delete(); 
     } 

     if ((folderDir.mkdirs() || folderDir.isDirectory())) { 
      try { 
       InputStream inputStream = connection.getInputStream(); 
       FileOutputStream fileOutputStream = new FileOutputStream(
         folderDir + "/" + filename); 

       byte[] buffer = new byte[1024]; 
       int len1 = 0; 
       while ((len1 = inputStream.read(buffer)) != -1) { 
        fileOutputStream.write(buffer, 0, len1); 
       } 
       fileOutputStream.close(); 
       inputStream.close(); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } else { 
      Toast.makeText(getApplicationContext(), 
        "Unable to create folder", Toast.LENGTH_LONG).show(); 
     } 
     return "Done"; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG) 
       .show(); 
     super.onPostExecute(result); 
    } 
} 

하는}

+0

오류가 발생하면 로그를 게시 할 수 있습니까? 귀하의 매니페스트에 인터넷 사용 권한을 추가 했습니까? 예 :

+0

@kanak Sony 나는 이것을 추가했으며 하지만 여전히 작동하지 않습니다. 나는 어떤 오류도 내지 않고있다. 단지 그 다운로드가 끝나지 않고있다. – user3154663

답변

1

실행해야 할 일을 명시 적으로 호출 할 수있다 그것의 실행 (에 Params ... PARAMS) 방법. 귀하의 경우에는 귀하의 작업 호출을 인스턴스화 이외에 어떤 매개 변수를 제공하지 않고 실행하십시오. 즉

DownloadFile task = new DownloadFile(); 
task.execute(); 

희망이 도움이됩니다.

+0

u는 나의 savoir ...이다. hahahahaha – user3154663

관련 문제