从服务器下载一个文件到 phone

Download a file from server to phone

我无法从服务器将文件下载到 Android phone 上的指定路径,但是 运行 此代码时没有任何反应。
我已经在清单文件中使用了所有必需的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

这是我的 MainActivity class:

private final String PATH = "/storage/sdcard0/BT/";


public void DownloadFromUrl(String fileName1) {  //this is the downloader method
    try {

        URL url = new URL(f);

        File file = new File(fileName1);


        HttpURLConnection ucon = (HttpURLConnection) url.openConnection();

        ucon.setRequestMethod("GET");
        ucon.setDoOutput(true);
        ucon.connect();
        FileOutputStream fos = new FileOutputStream(file);

        InputStream is = ucon.getInputStream();

        BufferedInputStream bis = new BufferedInputStream(is);


        ByteArrayBuffer baf = new ByteArrayBuffer(50);
        int current = 0;
        while ((current = bis.read()) != -1) {
            baf.append((byte) current);
        }

                    /* Convert the Bytes read to a String. */
       // FileOutputStream fos = new FileOutputStream(file);
        fos.write(baf.toByteArray());
        fos.close();
       // Log.d("ImageManager", "download ready in"
         //       + ((System.currentTimeMillis() - startTime) / 1000)
           //     + " sec");

    } catch (IOException e) {
        Log.d("ImageManager", "Error: " + e);
    }

    }

在 Android 中,您不能在主线程上执行与网络相关的任务 运行,指南指定主线程用于 UI 任务。

为了执行网络操作,例如下载文件、执行 GET 和 POST 请求以及其他各种请求,您需要使用 AsyncTask

有很多方法可以实现 AsyncTask,您可以在 Stack Overflow 和其他网站上找到很多示例,我将 link 下面介绍一些:

请参阅我提供的指南,了解如何使用 AsyncTask 在应用后台执行长时间的 运行ning 任务。

弄清楚基本概念后应该不会太难用