国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > 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();  }}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民乐县| 广宁县| 海原县| 中阳县| 华容县| 邢台市| 习水县| 丹东市| 汝州市| 卢氏县| 浦江县| 开封县| 金堂县| 边坝县| 弥渡县| 房产| 咸阳市| 昌宁县| 陕西省| 安福县| 涿鹿县| 静宁县| 霍州市| 潍坊市| 栾川县| 蓝山县| 库尔勒市| 微山县| 天峨县| 大化| 西和县| 邮箱| 新河县| 伊宁县| 钟祥市| 库车县| 阜城县| 余江县| 崇明县| 灵璧县| 上杭县|