a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統 > Android > 正文

Android實現下載文件功能的方法

2020-04-11 11:47:06
字體:
來源:轉載
供稿:網友

本文所述為Android實現下載文件功能的完整示例代碼,對于學習和研究android編程相信會有一定的幫助,尤其是對Android初學者有一定的借鑒價值。

完整功能代碼如下:

package com.test;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.util.Log;import android.view.View;import android.webkit.URLUtil;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class Main extends Activity {  private TextView mTextView01; private EditText mEditText01; private Button mButton01; private static final String TAG = "DOWNLOADAPK";  private String currentFilePath = "";  private String currentTempFilePath = "";  private String strURL=""; private String fileEx=""; private String fileNa="";  public void onCreate(Bundle savedInstanceState)  {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);     mTextView01 = (TextView)findViewById(R.id.myTextView1);  mButton01 = (Button)findViewById(R.id.myButton1);  mEditText01 =(EditText)findViewById(R.id.myEditText1);   mButton01.setOnClickListener(new Button.OnClickListener()  {  public void onClick(View v)   {   // 文件會下載至local端    mTextView01.setText("下載中...");   strURL = mEditText01.getText().toString();    /*取得欲安裝程序之文件名稱*/   fileEx = strURL.substring(strURL.lastIndexOf(".")   +1,strURL.length()).toLowerCase();   fileNa = strURL.substring(strURL.lastIndexOf("/")   +1,strURL.lastIndexOf("."));   getFile(strURL);   }  }  );    mEditText01.setOnClickListener(new EditText.OnClickListener()  {  public void onClick(View arg0){   mEditText01.setText("");   mTextView01.setText("遠程安裝程序(請輸入URL)");  }  }); }  /* 處理下載URL文件自定義函數 */ private void getFile(final String strPath) {  try  {  if (strPath.equals(currentFilePath) )  {    getDataSource(strPath);  }  currentFilePath = strPath;  Runnable r = new Runnable()  {   public void run()   {   try   {    getDataSource(strPath);   }   catch (Exception e)   {    Log.e(TAG, e.getMessage(), e);   }   }  };  new Thread(r).start();  }   catch(Exception e)   {   e.printStackTrace();   } }    /*取得遠程文件*/  private void getDataSource(String strPath) throws Exception  {   if (!URLUtil.isNetworkUrl(strPath))   {   mTextView01.setText("錯誤的URL");   }   else   {   /*取得URL*/  URL myURL = new URL(strPath);  /*創建連接*/  URLConnection conn = myURL.openConnection();  conn.connect();  /*InputStream 下載文件*/  InputStream is = conn.getInputStream();  if (is == null)   {    throw new RuntimeException("stream is null");   }   /*創建臨時文件*/   File myTempFile = File.createTempFile(fileNa, "."+fileEx);  /*取得站存盤案路徑*/  currentTempFilePath = myTempFile.getAbsolutePath();  /*將文件寫入暫存盤*/   FileOutputStream fos = new FileOutputStream(myTempFile);  byte buf[] = new byte[128];  do  {   int numread = is.read(buf);   if (numread <= 0)   {   break;   }   fos.write(buf, 0, numread);  }while (true);    /*打開文件進行安裝*/  openFile(myTempFile);  try   {    is.close();   }   catch (Exception ex)   {    Log.e(TAG, "error: " + ex.getMessage(), ex);   }   } }   /* 在手機上打開文件的method */ private void openFile(File f)  {  Intent intent = new Intent();  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  intent.setAction(android.content.Intent.ACTION_VIEW);    /* 調用getMIMEType()來取得MimeType */  String type = getMIMEType(f);  /* 設置intent的file與MimeType */  intent.setDataAndType(Uri.fromFile(f),type);  startActivity(intent);  } /* 判斷文件MimeType的method */ private String getMIMEType(File f)  {   String type="";  String fName=f.getName();  /* 取得擴展名 */  String end=fName.substring(fName.lastIndexOf(".")  +1,fName.length()).toLowerCase();     /* 依擴展名的類型決定MimeType */  if(end.equals("m4a")||end.equals("mp3")||end.equals("mid")||  end.equals("xmf")||end.equals("ogg")||end.equals("wav"))  {  type = "audio";   }  else if(end.equals("3gp")||end.equals("mp4"))  {  type = "video";  }  else if(end.equals("jpg")||end.equals("gif")||end.equals("png")||  end.equals("jpeg")||end.equals("bmp"))  {  type = "image";  }  else if(end.equals("apk"))   {   /* android.permission.INSTALL_PACKAGES */   type = "application/vnd.android.package-archive";   }   else  {  type="*";  }  /*如果無法直接打開,就跳出軟件列表給用戶選擇 */  if(end.equals("apk"))   {   }   else   {   type += "/*";   }   return type;  }  /*自定義刪除文件方法*/ private void delFile(String strFileName)  {   File myFile = new File(strFileName);   if(myFile.exists())   {   myFile.delete();   }  }   /*當Activity處于onPause狀態時,更改TextView文字狀態*/ protected void onPause() {  mTextView01 = (TextView)findViewById(R.id.myTextView1);  mTextView01.setText("下載成功");  super.onPause(); } /*當Activity處于onResume狀態時,刪除臨時文件*/  protected void onResume()  {   /* 刪除臨時文件 */   delFile(currentTempFilePath);   super.onResume();  }}

讀者可以在該實例的基礎上進行修改與完善,使之更符合自身項目需求。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 二区视频 | 国产在线不卡观看 | 天天看夜夜 | 在线播放国产一区二区三区 | 希岛爱理在线 | 在线免费看黄色av | 黄a视频在线观看 | 欧美视频免费在线 | 99福利视频 | 中文字幕亚洲视频 | 亚洲欧美另类在线观看 | 久久一区视频 | 久草久草久 | 欧美日韩高清在线观看 | 欧美精品一区二区三区在线 | 免费在线看a | 欧美日日操 | 久久久精品免费视频 | 成人深夜小视频 | 国产在线观看91一区二区三区 | 99精品99| 亚洲成a人v欧美综合天堂麻豆 | 亚洲精品午夜aaa久久久 | 国产精品99精品久久免费 | 国产视频中文字幕 | 国产成人精品亚洲7777 | 看亚洲a级一级毛片 | 欧美日韩高清 | 亚洲欧美一区二区三区国产精品 | 亚洲免费视频大全 | 国产在线一区观看 | 在线视频这里只有精品 | 欧美精品一区二区三区在线 | 伊人国产在线 | 少妇精品久久久久久久久久 | 日韩国产一区二区三区 | 综合一区 | 在线中文av| 国产精品久久久久久久久久免费 | 伊人免费观看视频 | 午夜激情影院在线观看 |