日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android下载文件

發布時間:2023/12/9 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android下载文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

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();
??? }
}

轉載于:https://my.oschina.net/u/614562/blog/228806

總結

以上是生活随笔為你收集整理的Android下载文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。