2014-09-29 135 views
-1

我嘗試從ftp下載apk文件,但下載後無法打開該文件。
原始文件和下載的文件具有相同的大小。 即時通訊使用Apache公共。 我的代碼:無法打開下載的文件

FTPClient ftpClient = new FTPClient(); 
     try{ 
      ftpClient.connect(mServer);   
      ftpClient.login(mUser, mPassword);    ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
      ftpClient.enterLocalPassiveMode(); 
      BufferedOutputStream FileStream = new BufferedOutputStream(new FileOutputStream(cestaLuHa),8*1024); 
      boolean status=ftpClient.retrieveFile("LuHa.apk", desFileStream); 
      if(status){ 
       result = "Downlaoded"; 
      } 
      FileStream.flush(); 
      ftpClient.logout(); 
      ftpClient.disconnect(); 
     } 
     catch (IOException e){ 
      result = "Error"; 
     } 

回答

0

首先下載文件;

FTPClient client = null; 
File ExternalDirectory = Environment.getExternalStorageDirectory(); 
File DownloadFile = new File(ExternalDirectory.getAbsoluteFile()+"//"+"file.apk"); 
    try { 
     client = new FTPClient(); 
     client.setControlEncoding("UTF-8"); 
     client.connect(mServer, 21); 
     client.login(mUser,mPassword); 
     client.enterLocalPassiveMode(); 
     client.setFileType(FTPClient.BINARY_FILE_TYPE); 
     OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(DownloadFile)); 
     boolean success = client.retrieveFile("//httpdocs//file.apk", outputStream); 
     if (!success) { 
      outputStream.close(); 
      Log.v("Download Status","Not Download"); 
     } else { 
      outputStream.close(); 
      Log.v("Download Status","Downloaded"); 
     } 

這是打開apk的第二部分;

Uri uri = Uri.fromFile(DownloadFile); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(uri, "application/apk"); //Maybe it 's different check different website for this 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(intent); 

最後一件事我必須說,你必須這樣做的背景下,經過3.0的Android擋在前臺的下載,你應該使用的AsyncTask這一點。 希望這會對你有所幫助

+0

這兩個部分都很完美。謝謝。問題似乎是將下載的文件保存到內部存儲器中。 – Oleg 2014-09-30 04:17:14

+0

沒問題,祝你有美好的一天 – massaimara98 2014-09-30 04:18:24

相關問題