Coder Social home page Coder Social logo

android-downloader's Introduction

android-downloader

English | 中文

License

Report an issue, iOS and macOS use CocoaDownloader.

Android Downloader is a open source multithread and mulitask downloadInfo framework for Android.

Try out the sample application on the Apk file.

Download

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Add the dependency:

dependencies {
    implementation 'com.ixuea:android-downloader:latest'
}

For info on using the bleeding edge, see the Snapshots wiki page.

ProGuard

If your project uses ProGuard, you need to add the following configuration to your project proguard-rules.pro file

-keep public class * implements com.ixuea.android.downloader.db.DownloadDBController

How do I use Android Downloader?

For more information on GitHub wiki and Javadocs.

1.Add network network permissions()

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

2.Create a DownloadManager instance

downloadManager = DownloadService.getDownloadManager(context.getApplicationContext());

Simple use as follows

3.Download a file

//create download info set download uri and save path.
File targetFile = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), "a.apk");
final DownloadInfo downloadInfo = new DownloadInfo.Builder().setUrl("http://example.com/a.apk")
    .setPath(targetFile.getAbsolutePath())
    .build();

//set download callback.
downloadInfo.setDownloadListener(new DownloadListener() {

  @Override
  public void onStart() {
      tv_download_info.setText("Prepare downloading");
  }

  @Override
  public void onWaited() {
      tv_download_info.setText("Waiting");
      bt_download_button.setText("Pause");
  }

  @Override
  public void onPaused() {
      bt_download_button.setText("Continue");
      tv_download_info.setText("Paused");
  }

  @Override
  public void onDownloading(long progress, long size) {
      tv_download_info
              .setText(FileUtil.formatFileSize(progress) + "/" + FileUtil
                      .formatFileSize(size));
      bt_download_button.setText("Pause");
  }

  @Override
  public void onRemoved() {
      bt_download_button.setText("Download");
      tv_download_info.setText("");
      downloadInfo = null;
  }

  @Override
  public void onDownloadSuccess() {
      bt_download_button.setText("Delete");
      tv_download_info.setText("Download success");
  }

  @Override
  public void onDownloadFailed(DownloadException e) {
      bt_download_button.setText("Continue");
      tv_download_info.setText("Download fail:" + e.getMessage());
  }
});

//submit download info to download manager.
downloadManager.download(downloadInfo);

Compatibility

  • Android SDK: Android Downloader requires a minimum API level of 21.

Build

Samples

Follow the steps in the Build section to setup the project and then:

./gradlew :app:run

You may also find precompiled APKs on the releases page.

More

See the example code.

Author

Smile - @ixueadev on GitHub, Email is [email protected], See more ixuea(http://www.ixuea.com)

Android development QQ group: 702321063.

android-downloader's People

Contributors

ixueadev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-downloader's Issues

Can not download large file (video >=10GB)

Hi, thank you for great library.

I have download video from internet by your library, it is success on download 3Gb file, but when I have try to download with 10Gb file size, it is error when progress about 70%. I have check log and found this message: "DownloadResponseImpl: progress: -7928293520,size:11717888873" -> The progress is negative number

Not allowed to start service

Android Downloader version:
Android Version:
Issue details/Repro steps:
11
2020-05-10 01:14:19

#702 java.lang.IllegalStateException
Not allowed to start service Intent { cmp=com.az.portal/cn.woblog.android.downloader.DownloadService }: app is in background uid UidRecord{52533c1 u0a69 TPSL idle change:idle|cached procs:1 seq(0,0,0)}
com.az.portal.application.AZApplication.onCreate(Unknown Source:127)
Use code:

Please paste your code here

Stack trace:

Please paste stack trace here

Screenshot(if any):
Please image url here

下载报错:unexpected end of stream

Android Downloader version:2.0.4
Android Version:9
Issue details/Repro steps:
1.不是总是不成功,大部分时候都成功
2.大部分时候都正常,10次大概会报错2次.

Use code:

downloadInfo.setDownloadListener(new DownloadListener() {

      @Override
      public void onStart() {
        Log.d(TAG, "准备开始");
      }

      @Override
      public void onWaited() {
        Log.d(TAG, "正在等待..可暂停");
      }

      @Override
      public void onPaused() {
        Log.d(TAG, "继续..可暂停");
      }

      @Override
      public void onDownloading(long progress, long size) {
        //Log.d(TAG, "进度:" + progress + ",总大小:" + size + ",可暂停");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
          progressBar.setProgress((int) (progress * 100f / size), true);
        } else {
          progressBar.setProgress((int) (progress * 100f / size));
        }
        //Log.d(TAG, "progress:" + progress);
        commit.setText((int)(progress/(1024*1024))+"M/"+(int)(size/(1024*1024))+"M");
      }

      @Override
      public void onRemoved() {
        Log.d(TAG, "removedDown移除");
      }

      @Override
      public void onDownloadSuccess() {
        Log.d(TAG, "Download success成功");
      }

      @Override
      public void onDownloadFailed(DownloadException e) {
        Log.d(TAG, "onDownloadFailed错误");
        e.printStackTrace();
      }
    });

Stack trace:

2019-05-03 20:48:05.715 10624-10661/com.iniyun.rx_android_demo D/DownloadResponseImpl: progress:104569952,size:105281352
2019-05-03 20:48:05.717 10624-10624/com.iniyun.rx_android_demo W/System.err: com.ixuea.android.downloader.exception.DownloadException: Protocol error
2019-05-03 20:48:05.718 10624-10624/com.iniyun.rx_android_demo W/System.err:     at com.ixuea.android.downloader.core.thread.DownloadThread.executeDownload(DownloadThread.java:125)
2019-05-03 20:48:05.718 10624-10624/com.iniyun.rx_android_demo W/System.err:     at com.ixuea.android.downloader.core.thread.DownloadThread.run(DownloadThread.java:56)
2019-05-03 20:48:05.718 10624-10624/com.iniyun.rx_android_demo W/System.err:     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
2019-05-03 20:48:05.718 10624-10624/com.iniyun.rx_android_demo W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2019-05-03 20:48:05.719 10624-10624/com.iniyun.rx_android_demo W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2019-05-03 20:48:05.719 10624-10624/com.iniyun.rx_android_demo W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2019-05-03 20:48:05.719 10624-10624/com.iniyun.rx_android_demo W/System.err:     at java.lang.Thread.run(Thread.java:764)
2019-05-03 20:48:05.721 10624-10624/com.iniyun.rx_android_demo W/System.err: Caused by: java.net.ProtocolException: unexpected end of stream
2019-05-03 20:48:05.722 10624-10624/com.iniyun.rx_android_demo W/System.err:     at com.android.okhttp.internal.http.Http1xStream$FixedLengthSource.read(Http1xStream.java:396)
2019-05-03 20:48:05.723 10624-10624/com.iniyun.rx_android_demo W/System.err:     at com.android.okhttp.okio.RealBufferedSource$1.read(RealBufferedSource.java:371)
2019-05-03 20:48:05.723 10624-10624/com.iniyun.rx_android_demo W/System.err:     at java.io.InputStream.read(InputStream.java:101)
2019-05-03 20:48:05.724 10624-10624/com.iniyun.rx_android_demo W/System.err:     at com.ixuea.android.downloader.core.thread.DownloadThread.executeDownload(DownloadThread.java:97)
2019-05-03 20:48:05.724 10624-10624/com.iniyun.rx_android_demo W/System.err: 	... 6 more

Screenshot(if any):
app没崩溃,只是下载进度停留在60-90%之间位置.

pdf file

hi, i can't download pdf file with androiddownloader
but i can download mp4, jpeg ... without any problem

startservice in android 8.0

[ERROR]
Caused by java.lang.IllegalStateException
Not allowed to start service Intent { cmp=net.instiz.www.instiz/com.ixuea.android.downloader.DownloadService }: app is in background uid UidRecord{848d58 u0a186 SVC idle change:idle|uncached procs:1 proclist:32669, seq(0,0,0)}


[ URL ]
https://github.com/ixuea/android-downloader/blob/f5f5690ed0a8be1d7afacb82d2d551591ce83e04/downloader/src/main/java/com/ixuea/android/downloader/DownloadService.java


[ Code ] DownloadService.java

public static DownloadManager getDownloadManager(Context context, Config config) {
        if (!isServiceRunning(context)) {
            Intent downloadSvr = new Intent(context, DownloadService.class);
            context.startService(downloadSvr); //<---- This is Code Line 31
        }
        if (DownloadService.downloadManager == null) {
            DownloadService.downloadManager = DownloadManagerImpl.getInstance(context, config);
        }
        return downloadManager;
    }

[Suggest & How to Solve ]
DownloadService.java - getDownloadManager() -31 Line, It needs to be divided
When running the service on Android 8.0

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    context.startForegroundService(downloadSvr);
} else {
    context.startService(downloadSvr);
}

Hi man you project was toocomplicated

我甚至不知道如何在列表下载中 传递FILE

Android Downloader version:
Android Version:
Issue details/Repro steps:

Use code:

Please paste your code here

Stack trace:

Please paste stack trace here

Screenshot(if any):
Please image url here

Multiple File Download

Downloading multiple file at a single click will be a great feature for this library.

Thank You.

Target SDK: API 28

Hello. First of all, thanks for your project.
I have a question.
Can you please tell me how can I make your code work at API 28? Currently, your target version is 22. But at v. 28 by pressing download button nothing happens. It just pauses. Here are some logs:

**Stack trace**:

2019-11-07 22:03:31.892 5081-5081/com.ixuea.android.downloader.simple D/MRAID-ViewListener: mraidViewLoaded
2019-11-07 22:03:31.896 5081-5081/com.ixuea.android.downloader.simple W/ContentCatcher: Failed to notify a WebView
2019-11-07 22:03:31.927 5081-5081/com.ixuea.android.downloader.simple D/MRAID-ViewListener: mraidViewExpand
2019-11-07 22:03:34.873 5081-5081/com.ixuea.android.downloader.simple W/ContentCatcher: Failed to notify a WebView
2019-11-07 22:03:34.891 5081-5081/com.ixuea.android.downloader.simple D/MRAID-ViewListener: mraidViewClose
2019-11-07 22:03:35.046 5081-5081/com.ixuea.android.downloader.simple I/chromium: [INFO:CONSOLE(32)] "(I-mraid.js) mraid.fireStateChangeEvent hidden", source: about:blank (32)
2019-11-07 22:03:35.046 5081-5081/com.ixuea.android.downloader.simple I/chromium: [INFO:CONSOLE(32)] "(I-mraid.js) fireEvent stateChange [hidden]", source: about:blank (32)
2019-11-07 22:03:35.047 5081-5081/com.ixuea.android.downloader.simple I/chromium: [INFO:CONSOLE(32)] "(I-mraid.js) no listeners found for stateChange", source: about:blank (32)
2019-11-07 22:03:35.245 5081-5081/com.ixuea.android.downloader.simple W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@f1d7632
2019-11-07 22:03:35.414 5081-5081/com.ixuea.android.downloader.simple I/API: onResume()
2019-11-07 22:03:35.434 5081-5081/com.ixuea.android.downloader.simple W/ContentCatcher: Failed to notify a WebView
2019-11-07 22:03:35.655 5081-5098/com.ixuea.android.downloader.simple I/wnloader.simpl: Compiler allocated 4MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
2019-11-07 22:03:35.740 5081-5081/com.ixuea.android.downloader.simple I/MRAID: Changing logging level from :none. To:none
2019-11-07 22:03:35.761 5081-5081/com.ixuea.android.downloader.simple D/EgretLoader: EgretLoader(Context context)
2019-11-07 22:03:35.761 5081-5081/com.ixuea.android.downloader.simple D/EgretLoader: The context is not activity
2019-11-07 22:03:35.804 5081-5110/com.ixuea.android.downloader.simple W/System: A resource failed to call close. 
2019-11-07 22:03:35.804 5081-5110/com.ixuea.android.downloader.simple I/chatty: uid=10496(com.ixuea.android.downloader.simple) FinalizerDaemon identical 3 lines
2019-11-07 22:03:35.805 5081-5110/com.ixuea.android.downloader.simple W/System: A resource failed to call close. 
2019-11-07 22:03:38.690 5081-5081/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:0
2019-11-07 22:03:38.734 5081-5081/com.ixuea.android.downloader.simple I/TableUtils: creating table 'MyBusinessInfLocal'
2019-11-07 22:03:38.740 5081-5081/com.ixuea.android.downloader.simple I/TableUtils: executed create table statement changed 1 rows: CREATE TABLE `MyBusinessInfLocal` (`icon` VARCHAR , `id` VARCHAR , `name` VARCHAR , `url` VARCHAR , PRIMARY KEY (`id`) ) 
2019-11-07 22:03:38.740 5081-5081/com.ixuea.android.downloader.simple I/TableUtils: creating table 'MyDownloadInfLocal'
2019-11-07 22:03:38.742 5081-5081/com.ixuea.android.downloader.simple I/TableUtils: executed create table statement changed 1 rows: CREATE TABLE `MyDownloadInfLocal` (`createAt` BIGINT , `id` INTEGER , `path` VARCHAR , `progress` BIGINT , `size` BIGINT , `status` INTEGER , `supportRanges` INTEGER , `uri` VARCHAR , PRIMARY KEY (`id`) ) 
2019-11-07 22:03:38.896 5081-5885/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:1669190
2019-11-07 22:03:39.127 5081-5885/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:1669190
2019-11-07 22:03:50.802 5081-5081/com.ixuea.android.downloader.simple W/ContentCatcher: Failed to notify a WebView
2019-11-07 22:03:51.656 5081-5081/com.ixuea.android.downloader.simple W/ContentCatcher: Failed to notify a WebView
2019-11-07 22:03:51.937 5081-5081/com.ixuea.android.downloader.simple I/MRAID: Changing logging level from :none. To:none
2019-11-07 22:03:51.975 5081-5081/com.ixuea.android.downloader.simple D/EgretLoader: EgretLoader(Context context)
2019-11-07 22:03:51.976 5081-5081/com.ixuea.android.downloader.simple D/EgretLoader: The context is not activity
2019-11-07 22:04:06.929 5081-5081/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:0
2019-11-07 22:04:07.008 5081-5081/com.ixuea.android.downloader.simple W/ContentCatcher: Failed to notify a WebView
2019-11-07 22:04:07.810 5081-5081/com.ixuea.android.downloader.simple W/ContentCatcher: Failed to notify a WebView
2019-11-07 22:04:08.075 5081-5081/com.ixuea.android.downloader.simple I/MRAID: Changing logging level from :none. To:none
2019-11-07 22:04:08.104 5081-5081/com.ixuea.android.downloader.simple D/EgretLoader: EgretLoader(Context context)
2019-11-07 22:04:08.104 5081-5081/com.ixuea.android.downloader.simple D/EgretLoader: The context is not activity
2019-11-07 22:04:10.902 5081-5081/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:0
2019-11-07 22:04:14.353 5081-5081/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:0
2019-11-07 22:04:14.357 5081-5081/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:0
2019-11-07 22:04:16.128 5081-5081/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:0
2019-11-07 22:04:17.521 5081-5081/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:0
2019-11-07 22:04:19.088 5081-5081/com.ixuea.android.downloader.simple D/DownloadResponseImpl: progress:0,size:1669190

well

还不错,简单易懂,demo略糙。

handleException:other error

com.ixuea.android.downloader.simple V querySoundEffectsEnabled... 2023-05-01 18:49:43.146 4535-4535 DownloadResponseImpl com.ixuea.android.downloader.simple D progress:232497,size:355791 2023-05-01 18:49:43.150 4535-4535 DownloadResponseImpl com.ixuea.android.downloader.simple D progress:232497,size:355791 2023-05-01 18:49:43.156 4535-4633 NetworkSecurityConfig com.ixuea.android.downloader.simple D No Network Security Config specified, using platform default 2023-05-01 18:49:43.168 4535-4535 HwGalleryC...anagerImpl com.ixuea.android.downloader.simple D mIsEffect:false 2023-05-01 18:49:44.332 4535-4632 DownloadResponseImpl com.ixuea.android.downloader.simple E handleException:other error 2023-05-01 18:49:44.335 4535-4632 DownloadResponseImpl com.ixuea.android.downloader.simple D progress:232497,size:355791 2023-05-01 18:49:44.743 4535-4633 DownloadResponseImpl com.ixuea.android.downloader.simple D progress:240689,size:355791

标题

请问可以设置下载文件的标题吗用于显示?没找到呢

guide how to use it in xml.

I want to implement this library for my app. but i am stucked howto use this as we have code view in doc but dont know how to make my recyclerview get cast to your library?

安卓8.0 启动后台服务适配问题

java.lang.IllegalStateException:Not allowed to start service Intent { cmp=com.cdwh.chatapp/cn.woblog.android.downloader.DownloadService }: app is in background uid UidRecord{f50bf80 u0a443 CEM idle change:idle|cached procs:1 seq(0,0,0)}

(1)如果针对 Android 8.0 的应用尝试在不允许其创建后台服务的情况下使用 startService() 函数,
则该函数将引发一个 IllegalStateException。新的 Context.startForegroundService() 函数将启动一个前台服务。

(2)即使应用在后台运行,系统也允许其调用 Context.startForegroundService()。不过,
应用必须在创建服务后的五秒内调用该服务的 startForeground() 函数。

Still downloading after progress is larger than file size

Android Downloader version:
Android Version:
Issue details/Repro steps:
Continues download after progress larger than file size
Use code:

Please paste your code here

Stack trace:

Please paste stack trace here

Screenshot(if any):
Please image url here

数据库升级

Android Downloader version:
Android Version:
Issue details/Repro steps:

Use code:数据库更新前代码


  public static final String TABLE_NAME_DOWNLOAD_INFO = "download_info";
  public static final String TABLE_NAME_DOWNLOAD_THREAD_INFO = "download_thread_info";
  private static final String SQL_CREATE_DOWNLOAD_TABLE = String.format(
      "CREATE TABLE %s (_id integer PRIMARY KEY NOT NULL,supportRanges integer NOT NULL,createAt long NOT NULL,uri varchar(255) NOT NULL,path varchar(255) NOT NULL,size long NOT NULL, progress long NOT NULL,status integer NOT NULL,sortId integer NOT NULL);",
      TABLE_NAME_DOWNLOAD_INFO);
  private static final String SQL_CREATE_DOWNLOAD_THREAD_TABLE = String.format(
      "CREATE TABLE %s (_id integer PRIMARY KEY NOT NULL,threadId integer NOT NULL,downloadInfoId integer NOT NULL,uri varchar(255) NOT NULL,start long NOT NULL,end long NOT NULL,progress long NOT NULL);",
      TABLE_NAME_DOWNLOAD_THREAD_INFO);
  private static final int DB_VERSION = 1;


  public DefaultDownloadHelper(Context context, Config config) {
    super(context, config.getDatabaseName(), null, config.getDatabaseVersion());
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
    createTable(db);
  }

  private void createTable(SQLiteDatabase db) {
    db.execSQL(SQL_CREATE_DOWNLOAD_TABLE);
    db.execSQL(SQL_CREATE_DOWNLOAD_THREAD_TABLE);
  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    //TODO upgrade database

  }
Please paste your code here
```数据库表添加了字段,更新数据库
public class DefaultDownloadHelper extends SQLiteOpenHelper {

    public static final String TABLE_NAME_DOWNLOAD_INFO = "download_info";
    public static final String TABLE_NAME_DOWNLOAD_THREAD_INFO = "download_thread_info";
    private static final String SQL_CREATE_DOWNLOAD_TABLE = String.format(
            "CREATE TABLE %s (_id integer PRIMARY KEY NOT NULL,supportRanges integer NOT NULL,createAt long NOT NULL,uri varchar(255) NOT NULL,path varchar(255) NOT NULL,size long NOT NULL, progress long NOT NULL,status integer NOT NULL,sortId integer NOT NULL,chapterId integer NOT NULL,partId integer NOT NULL,chapterName varchar(255) NOT NULL);",
            TABLE_NAME_DOWNLOAD_INFO);
    private static final String SQL_CREATE_DOWNLOAD_THREAD_TABLE = String.format(
            "CREATE TABLE %s (_id integer PRIMARY KEY NOT NULL,threadId integer NOT NULL,downloadInfoId integer NOT NULL,uri varchar(255) NOT NULL,start long NOT NULL,end long NOT NULL,progress long NOT NULL);",
            TABLE_NAME_DOWNLOAD_THREAD_INFO);
    private static final int DB_VERSION = 1;


    public DefaultDownloadHelper(Context context, Config config) {
        super(context, config.getDatabaseName(), null, config.getDatabaseVersion());
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        createTable(db);
    }

    private void createTable(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_DOWNLOAD_TABLE);
        db.execSQL(SQL_CREATE_DOWNLOAD_THREAD_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //TODO upgrade database
        Log.i("------------", oldVersion + "------" + newVersion);
        try {
            db.execSQL("DROP TABLE IF EXISTS SQL_CREATE_DOWNLOAD_TABLE");
            db.execSQL("DROP TABLE IF EXISTS SQL_CREATE_DOWNLOAD_THREAD_TABLE");
            this.onCreate(db);
        } catch (Exception e) {
        }
    }
}

然后直接运行在老版本上,报错,我知道是数据库更新的问题,但是我不知道怎么写更新代码,求大神帮忙指点迷津,谢谢老板。。。
![image](https://user-images.githubusercontent.com/33644433/67942205-4e03e600-fc12-11e9-8ff1-7cb0bc92f790.png)

Stuck on Android 11

IMG-20211205-WA0004

Hi i think its a bug or it didnt work well on Android 11?
the progressbar wont updating at all, but when i check on my download folder the file is exists, it works well on Android 10 and below, thanks

setCreateAt on Builder need fixes

Android Downloader version:2.0.4
Android Version:
Issue details/Repro steps:
In The DownloadInfo.java on
public DownloadInfo build() block

you have used:

if (createAt == -1) {
                setCreateAt(System.currentTimeMillis());
            }

so even setCreateAt setting on build but does not affecting
pls after that add

 downloadInfo.setCreateAt(createAt);

so that it can set both manually given time or currentTimeMilis.

Unable to download image files

Throwing below exception while downloading image file

com.ixuea.android.downloader.exception.DownloadException: UnSupported response code:301

DownloadManagerImpl构造函数代码流程问题导致报错

1.0.1:
6.1:
代码流程问题导致报错:

Use code:
AndroidDownloader/downloader/src/main/java/cn/woblog/android/downloader/DownloadManagerImpl.java

private DownloadManagerImpl(Context context, Config config) {
this.context = context;
if (config == null) {
this.config = new Config(); //config仍然为空
} else {
this.config = config;
}

if (config.getDownloadDBController() == null) { //config 可能为空
downloadDBController = new DefaultDownloadDBController(context, this.config);
} else {
downloadDBController = config.getDownloadDBController();
}
........


**Stack trace**:

config is null


**Screenshot(if any)**:
Please image url here

存在无限下载的情况

“129105573,76907434”,前面是我log打印的,第一个是progress,后面是size。progress大于size后还一直在下载。

Unrecoverable Range Error.: Response code 416

Range error originating from executeDownload() in DownloadThread.

When trying to download some downloads the library sends wrong ranges which cannot be filled by the server, resulting in unrecoverable errors while trying to download files.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.