2011-07-06 13 views
1

私はアンドロイドを新しくしており、この問題を長い間抱えています...googlesオンラインドキュメントビューアからpdfをダウンロードしてください

私は、Webビューを読み込むアクティビティを持っています。このウェブビューでは、googlesオンラインドキュメントビューア経由でpdfを表示します。これはすべて完全に機能します。

私はダウンロードボタンがあります(pdfをSDカードにダウンロードするには)。 しかし問題は、ダウンロードしていないということです。何も起こっていないようです。 進捗ダイアログが数秒間表示され、0%のままで消えます。

ファイルをダウンロードする方法についてのヘルプは、非常に高く評価されます。 おかげ

PSファイルへのリンクが

代わりの

ファイルをダウンロードするAsyncTaskを使用して、.zipファイル/それだけで

public class ExamViewActivity extends Activity { 

    private static final int DIALOG_DOWNLOAD_PROGRESS = 0; 
    private Button downloadButton; 
    private ProgressDialog mProgressDialog; 
    private String pdf; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.exam_paper_view); 

     //retrieve data(pdf link) from previous activity 
     Bundle b = getIntent().getExtras(); 
     pdf = b.getString("pdf"); 

     //webview 
     WebView webview = (WebView) findViewById(R.id.google_webview); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.loadUrl("http://docs.google.com/gview?embedded=true&url=" + pdf); 



     //download button 
     downloadButton = (Button)findViewById(R.id.download_button); 

     downloadButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       startDownload(); 
      } 
     }); 
    } 

    //start download process 
    private void startDownload() { 
     String url = pdf; 
     Log.d("MyLog","url = " + pdf); 
     new DownloadFileAsync().execute(url); 
    } 

    //create progress bar dialog 
    @Override 
    //On Create Dialog 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
      case DIALOG_DOWNLOAD_PROGRESS: 
       mProgressDialog = new ProgressDialog(this); 
       mProgressDialog.setMessage("Downloading file.."); 
       mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
       mProgressDialog.setCancelable(false); 
       mProgressDialog.show(); 
       return mProgressDialog; 
      default: 
       return null; 
     } 
    } 
    class DownloadFileAsync extends AsyncTask<String, String, String> { 

     @Override 
     //On Pre Execute 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      showDialog(DIALOG_DOWNLOAD_PROGRESS); 
     } 

     @Override 
     //Do In Background 
     protected String doInBackground(String... aurl) { 
      int count; 

      try { 
       URL url = new URL(aurl[0]); 
       URLConnection conexion = url.openConnection(); 
       conexion.connect(); 

       int lenghtOfFile = conexion.getContentLength(); 
       Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile); 

       InputStream input = new BufferedInputStream(url.openStream()); 
       OutputStream output = new FileOutputStream("/sdcard/"+pdf); 

       byte data[] = new byte[1024]; 

       long total = 0; 

       while ((count = input.read(data)) != -1) { 
        total += count; 
        publishProgress(""+(int)((total*100)/lenghtOfFile)); 
        output.write(data, 0, count); 
       } 

       output.flush(); 
       output.close(); 
       input.close(); 
      } catch (Exception e) {} 
      return null; 

     } 
     //On progress update 
     protected void onProgressUpdate(String... progress) { 
      Log.d("ANDRO_ASYNC",progress[0]); 
      mProgressDialog.setProgress(Integer.parseInt(progress[0])); 
     } 

     @Override 
     //On post execute 
     protected void onPostExecute(String unused) { 
      dismissDialog(DIALOG_DOWNLOAD_PROGRESS); 
     } 
} 

答えて

0

OKの.pdfで終わる典型的なURLです.RARではありません進行状況を示す。 私は(今のところ)ACTION_VIEWの意図を使ってファイルをダウンロードしました。

//download button 
    downloadButton = (Button)findViewById(R.id.download_button); 

    downloadButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent downloadIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(pdf)); 
      startActivity(downloadIntent); 
     } 
    }); 

私が今行うべきことは、ファイルを別のフォルダに保存する方法を見つけることです。しかし今のところ、これはしなければならないでしょう。 他の人が同じ問題を抱えていた場合、私はこの代替案を提示すると言っています。

関連する問題