安卓下载文件

如何在安卓手机/平板上找到下载文件? 在我们的安卓设备上下载文件的便利性已经成为我们日常生活的一部分。无论是获取最新的应用程序更新、保存重要文档,还是下载多媒体内容,快速访问这些下载文件至关重要。然而,在众多应用程序和设置中,许多人常常会问:“”或“在安卓上哪里可以找到下载文件?”在本文中,我们将汇总五种有效的方法,帮助您在安卓设备上找到下载的文件。无论您使用的是三星Galaxy、谷歌Pixel还是其他任何安卓设备,这些方法都将使您能够轻松访问下载文件,无需技术难题。 阅读详情

下载文件

1,伙伴们,在这里我是下载的 .zip文件到本地,添加到了 进度条显示,具体代码如下:

2,首先是 布局吧:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".study.six.downLoadZip.DownLoadZipActivity">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:layout_margin="20dp"
        android:textSize="20sp"
        android:text="第二种方法  下载 zip文件 "></TextView>

    <ProgressBar
        android:id="@+id/download_main_progressBarlist"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:min="0"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        style="?android:attr/progressBarStyleHorizontal"
        />

    <TextView
        android:id="@+id/download_main_Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/download_main_progressBarlist"
        android:layout_below="@+id/download_main_progressBarlist"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="当前进度" />

    <Button
        android:id="@+id/download_main_Button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="15dp"
        android:layout_marginLeft="15dp"
        android:layout_alignLeft="@+id/download_main_Text"
        android:layout_below="@+id/download_main_Text"
        android:layout_marginTop="39dp"
        android:text="下载zip文件" />

</LinearLayout>

3,然后 呢 是点击事件 和具体代码:

package com.example.myviewtwo.study.six.downLoadZip;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myviewtwo.R;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class DownLoadZipActivity extends AppCompatActivity {


    //    第二种方法
    public static final int EXTERNAL_STORAGE_REQ_CODE = 10 ;
    private static final String Path="https://storage.googleapis.com/flutter_infra_release/releases/stable/windows/flutter_windows_2.2.1-stable.zip";
    private static String fileName = "flutter_windows_2.2.1-stable.zip";
    private static String filePath= "/download/";
    private ProgressBar progressBar;
    private TextView textView;
    private Button button;
    private int FileLength;
    private int DownedFileLength=0;
    private InputStream inputStream;
    private URLConnection connection;


    private Handler handler=new Handler() {
        public void handleMessage(Message msg)
        {
            if (!Thread.currentThread().isInterrupted()) {
                switch (msg.what) {
                    case 0:
                        progressBar.setMax(FileLength);
                        Log.i("info","文件总长度----------->"+ progressBar.getMax()+"");
                        break;
                    case 1:
                        int  percent = (int) (((float) DownedFileLength / FileLength) * 100);
                        Log.d("info","下载进度更新=="+percent +" 总长度是=="+FileLength);
                        progressBar.setProgress(percent);
                        textView.setText(percent+"%");
                        break;
                    case 2:
                        Log.d("info","下载完成了");
                        Toast.makeText(getApplicationContext(), "下载完成", Toast.LENGTH_LONG).show();
                        break;

                }
            }
        }

    };




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_down_load_zip);


        int permission = ActivityCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if (permission != PackageManager.PERMISSION_GRANTED) {
            // 请求权限
            ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, EXTERNAL_STORAGE_REQ_CODE);

        }


        progressBar=(ProgressBar) findViewById(R.id.download_main_progressBarlist);
        textView=(TextView) findViewById(R.id.download_main_Text);
        button=(Button) findViewById(R.id.download_main_Button);


        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                DownedFileLength=0;
                Thread thread=new Thread(){
                    public void run(){
                        try {
                            DownFile(Path);//下载 zip文件包
                        } catch (Exception e) { }
                    }
                };
                thread.start();
            }
        });



    }




    private void DownFile(String urlString) {

        /*
         * 连接到服务器
         */
        try {

            URL url = new URL(urlString);
            connection = url.openConnection();
            if (connection.getReadTimeout() == 5) {
                Log.i("info", "当前网络有问题");
                return;
            }
            if(connection==null){
                Log.i("info", "当前连接失败");
                return;
            }

            inputStream = connection.getInputStream();

        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        /*
         * 文件的保存路径和和文件名其中Nobody.mp3是在手机SD卡上要保存的路径,如果不存在则新建
         */
        String savePAth = Environment.getExternalStorageDirectory() + filePath;
        File file1 = new File(savePAth);
        if (!file1.exists()) {
            file1.mkdir();
        }
        String savePathString = Environment.getExternalStorageDirectory() + filePath + fileName;
        File file = new File(savePathString);
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        /*
         * 向SD卡中写入文件,用Handle传递线程
         */
        Message message = new Message();
        try {
            FileLength = connection.getContentLength();
            Log.d("info","文件的总长度是=="+FileLength);
            RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rwd");
            randomAccessFile.setLength(FileLength);
            byte[] buf = new byte[1024 * 4];
            message.what = 0;
            handler.sendMessage(message);

            int length = 0;
            while ((length = inputStream.read(buf)) != -1) {
                randomAccessFile.write(buf, 0, length);
                DownedFileLength += length;
                Log.i("info", "正在下载的文件长度是==="+DownedFileLength + "");
                Message message1 = new Message();
                message1.what = 1;
                handler.sendMessage(message1);
            }
            inputStream.close();
            randomAccessFile.close();
            Message message2 = new Message();
            message2.what = 2;

            handler.sendMessage(message2);

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

OK 最后把,就是这样,大家都是 大神一看便知。谢谢收看 哈哈哈

[Android]安卓上传下载文件 主要是参考资料1 的源码。 相关资料1 里面的文件解压到安卓项目 的android library的libs文件夹内,并添加依赖 JAVA上传 public void upload(String fileName) { String filePath = RecorderUtils.getInstance().mFilePath+fileName+RecorderUtils.fileName; FileUploadConfiguration fi... 阅读详情

相关推荐

Android实现下载zip压缩文件并解压的方法(附源码)

前言 其实在网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,所以这篇文章在此记录一下下载zip文件并直接解压的方法,直接上代码,文末有源码下载。 下载: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp

Android Studio 4.0 gradle-6.1.1-all.zip 下载速率太慢或失败解决办法

今天在家里电脑上新装了Android Studio 4.0, gradlegradle-6.1.1-all.zip 下载速度实在是太慢了,后来尝试在https://downloads.gradle-dn.com/distributions/gradle-6.1.1-all.zip地址下载,同样是非常慢,经常失败。 在此将下载出来的 gradle-6.1.1 分享出来:https://pan.baidu.com/s/1MlgtiQE01FV7TuweKfCdLA 提取码:914x 配置过程: 1.gradle

star_of_science的博客 2万+

AAC编解码器在实时通信中的性能对比与应用选择

本文深入分析了AAC编解码器在实时通信中的性能优化,重点对比了faac、faad2与fdk-aac三大开源方案在WebRTC场景下的表现。通过实测数据揭示其在延迟、音质和资源消耗等关键指标的差异,并提供场景化选型建议与调优技巧,帮助开发者提升实时音视频通信质量。

weixin_29210727的博客 388

android 刷机 zip,安卓自制zip刷机包 zip包刷机脚本函数详细例举教程

对于很多狂热于刷机爱好的机友们来说最高的追求就是自制刷机包,那么自制刷机包最重要的不是程序的内置收集,也不是美化或者精简,最重要的是对于刷机包的刷机脚本的编写,鉴于很多同学想学却又找不到资料,今天拉拉果断决定给大家分享一份自己收集整理的刷机脚本函数释义教程。例如:ifelse(mount("yaffs2", "MTD", "system", "/system") == "system", ui_p...

weixin_29149245的博客 1666

告别专业软件!用QGIS+GDAL免费搞定S-57电子海图,附全套符号库和样式文件

本文详细介绍了如何利用免费开源工具QGIS和GDAL处理S-57电子海图,包括数据转换、符号库配置和专业可视化方案。通过实战指南,用户无需依赖昂贵的商业软件,即可实现从S-57到SHP的转换及专业级海图制作,特别适合预算有限的个人和小型机构。

weixin_33701294的博客 391

FMEA-MSR步骤三:功能分析

目的 FMEA-MSR功能分析的主要目标: ● 功能及各功能之间的关系的可视化 ● 功能树/网络或等效功能矩阵参数图(P图) ● 顾客(外部和内部)功能与相关要求的关联 ● 要求或特性与功能的关联 ● 工程团队(系统、安全和组件)之间的协作 ● 失效分析步骤的基础 (点击链接进入官网领取软件试用) 在监视及系统响应的补充FMEA中,对失效探测和失效响应的监视视为其具有的功能。硬件和软件功能可能包括监视控制状态的功能。 故障/失效的监视和探测功能可能包括超出范围的探测、循环冗余校验、真实性检查和序列计数器检查

Infomass的博客 2389

实现Android文件下载和上传功能的详细指南

实现Android文件下载和上传功能的详细指南

weixin_51522235的博客 3608

[金仓数据库V8R6]更换授权

上传授权,使用mv license_xxx_0.dat /home/kingbase/KingbaseES/license.dat替换每个授权,并使用ls -l license.dat确保替换前后属主和权限不变。根据步骤1的数据目录位置,执行/home/kingbase/KingbaseES/Server/bin/sys_ctl -D /home/kingbase/KingbaseES/data reload使新的授权文件生效。该参数意义为授权剩余有效天数,查询结果为新授权中有效期间的天数即为替换成功。

l04050924的博客 3706

Android网络功能开发(4)——文件下载和上传

本文介绍了Android端用HTTP协议实现文件下载和上传的原理和代码,以及服务器端的代码。

nanoage的博客 4361

详细推导波特图增益和相位曲线

文章来源:https://mp.weixin.qq.com/s/UCy9mRRok5Hc9qHq3qde5g 今天这篇文章想把近段时间关于波特图方面学习的内容整理一下。波特图将会是梳理闭环控制这个系列的开始。目前的计划是,以无源器件为基础,然后结合运放,再过渡到开关电源的环路控制方面。如果对这方面感兴趣的朋友,可以持续一起学习起来,目标就是掌握开关电源的闭环控制。 1. 什么是波特图? 波特图最常见的应用是在线性非时变的系统中,用于对传递函数的增益和相位进行分析,从而判断出系统随频率的响应是否稳定。因此,波

ltqdxl的博客 2万+

高性能网站设计之缓存更新的套路

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。 我不知道为什么这么多人用的都是这

代码技巧 1万+

android下载解压zip,Android 下载Zip文件,并解压到本地,进行本地调用

如有不对的地方,望各路大神指点,小女子在此谢过O(∩_∩)O点击此处下载demo,看完整代码,(*^__^*) 嘻嘻……1.下载文件/*** 下载zip文件** @param url*/private void downloadFile(final String url) {OkHttpClient.Builder builder = new OkHttpClient.Builder().conn...

weixin_39744316的博客 894

《UDS协议从入门到精通》系列——图解0x14:清除诊断信息

图解0x14:清除诊断信息,简洁易懂,迅速上手!

车载系统攻城狮 4821

php 安卓下载文件,Android 文件下载(1)

本节引言:又是一个深坑,初学者慎入...本节将从普通的单线程下载 -> 普通多线程下载 ->-> 以及一个很实用的例子:利用Android那只DownloadManager更新apk并覆盖安装的实现代码!好的,这样看上去,本节还是蛮有趣的,开始本节内容!PS:我们把整个完整的多线程断点续传放到下一节中!1.普通单线程下载文件:直接使用URLConnection.openStrea...

weixin_29485887的博客 501

华为OD机试双机位C卷-MVP争夺战 (C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【MVP争夺战】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - MVP争夺战,

qq_45776114的博客 1169

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android安卓根据地址下载文件并保存到本地(HttpDownload)

安卓根据地址下载文件并保存到本地,这里主要是用asyncTask中实现,并实现进度条实时更新。根据下载结果,判断返回3中情况:已下载,失败,成功。此方法下载保证可以保证下载不失真,不会出现下载大小与实际不符的情况,此处只列出AsyncTask的代码,供参考。如有问题,请在评论中指出。class DownloadFileFromURL extends AsyncTask<String, String,

daisuyang518的博客 8398

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

安卓 文件下载

uses-permission android:name="android.permission.INTERNET" />网络访问权限是必须的,下载地址为sdcard的话需要添加sdcard写权限。// 测试文件下载地址(格式为http://..../文件名.文件类型)// 获取链接中最后一个/的下标。// 设置下载时通知显示的标题。

weixin_72426331的博客 593

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

android之下载文件

使用场景:用tomcat搭建了一个文件服务器,然后在安卓端去下载文件。 使用技术:使用 HttpURLConnection 建立http连接,并下载 package com.example.facecompare.FaceApi; import android.content.Context; import android.util.Log; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputS

1275

逍遥模拟器拷贝android根目录文件,逍遥安卓模拟器下载的文件在哪里?

逍遥安卓模拟器里面下载的文件都保存在哪里?通过逍遥安卓模拟器下载的文件保存在电脑的哪个文件夹中?如何找到逍遥安卓模拟器里面下载的文件?方法步骤1.逍遥安卓模拟器是一款非常好用的安卓模拟器。能够帮助用户在电脑上运行安卓应用还有游戏,并且支持多开,十分好用,但是有小伙伴会问逍遥安卓模拟器里面保存的文件在哪里,今天小编就来教大家找到这些文件。2.我们下载好逍遥安卓模拟器之后将其打开,在右侧我们会看到逍遥...

weixin_28727943的博客 1万+

Android安卓WebView下载文件问题

webview的下载问题及解决

萌萌的博客 1万+

安卓 下载文件

下载文件示例: String Url = "https://raw.githubusercontent.com/scimence/AndroidPlugin/master/apk/AndroidPlugin_plugin1.apk"; String filePath = Environment.getExternalStorageDirectory().getAbsolutePath() +...

暂无内容 1264

【Android】安卓 Java下载ZIP文件并解压(笔记)

本篇笔记记录如何在 Android 中通过 Java 下载 ZIP 文件并解压,同时处理下载进度、错误处理以及优化方案。

一个XR(AR|VR|MR)程序猿的博客(EQ-雪梨蛋花汤) 1143

安卓文件下载

在网上找了很多资料,但是都存在一定的bug。问题解决后,特写出问题解决方案。 1.使用安卓自带的downloadmanage下载。(推荐,下载后的文件可在手机最近的目录查看) final DownloadManager dManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); Uri uri = Uri.parse(UrlUtils.BASE_URL+"/media/"+list_show.get(position

qq_39107335的博客 1006

Android开发之文件下载

Android作为一个手机操作系统,在Android中访问网络是许多应用程序都必需的功能。用户也经常需要在应用程序中下载所需要的文件比如电子书,MP3格式的音乐文件,电影等。Android文件下载的一般步骤:      1、创建一个HttpURLConnection的对象           URL url=new URL(urlStr);           HtttpURLConnection urlConn=(HtttpURLConnection)url.OpenConnection();     

ITCEOjingying的专栏 9585

android.os.AsyncTask(文件下载)

android.os.AsyncTask <String,Void,Integer> AsyncTask :是可以使用UI线程变得更容易更适当,它可以在后台运行一些操作在UI上展现,不用具体的线程。 包括三种基本类型(调用参数,进度,结果) 四个操作步骤(调用开始,在后台运行,处理进度,结束) 必须作为一个子类使用,它是一个抽象类,实例的AsyncTask只能execute一次,多次则会抛出异常。

扬扬 398

springboot文件上传与下载和安卓的文件下载

移动互联网实验我想加入些功能,就是网页版课程文件的上传下载和安卓端课程文件的下载,鼓捣了一天,来记录一下这是怎么实现的 我的思路是这样的:网页在上传课程文件的时候,会有两个参数,课程号courseId和文件名fileName,将其存放在服务器上对应的/usr/files/courseId/fileName/usr/files/courseId/fileName/usr/files/courseId...

cobracanary的博客 656
上一篇: 安卓 加载网络图片并下载本地
下一篇: 安卓 下载pdf到手机存储
mawlAndroid
博客等级 码龄10年 5粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值