Easily upload files (Multipart/Binary/FTP out of the box) in the background with progress notification. Support for persistent upload requests, customizations and custom plugins.

Overview

Android Arsenal ktlint Maven Central PRs Welcome

ℹ️ 🆕 Get started with 4.x
👉 Try it out Get the demo APK
Still using 3.x ? It's not maintained or supported. You may have security issues and problems with newer Androids. Switch to 4.x
💥 Not working? Keep calm and follow the troubleshooting procedure
📖 Wiki Read this to discover all the possibilities
🎁 Find this library useful? Consider sponsoring its development by pressing the Sponsor button on the top right of this page.
❤️ Contributing
🌟 Features
🙋 Who is using Upload Service
📣 Credits
📜 License

Screencasts from the example app included in this repository:

compose-upload upload

Features

  • Android 5.0 (API 21) to Android 11 (API 30) support
  • 100% Kotlin and fully interoperable with Java
  • upload files to a server with FTP, HTTP multipart/form-data or Binary data requests
  • upload requests can be serialized and executed later
  • handle multiple concurrent uploads in the background, even if the device is idle (Doze mode)
  • automatically retry failed uploads, with a configurable exponential backoff
  • possiblity implement other upload protocols as plugins
  • possibility to automatically delete uploaded files when the upload is successful
  • show status in the Android Notification Center.
  • change the underlying HTTP stack. Currently HttpURLConnection (the default) and OkHttp are supported. You can also implement your own.
  • set library log level and provide custom logger implementation
  • easily customize the notification with text, icons and actions for the different states
  • Possibility to implement your own notification handler
  • Lifecycle-Aware RequestObserver to monitor your uploads

At the core of the library there is a Service which handles multiple concurrent upload tasks in the background. It publishes broadcast intents to notify status. This way the logic is completely decoupled from the UI. You are safe launching upload requests from your fragments, activities and services without worrying about locking the thread in which you are. Check the wiki to learn how you can use it in your App.

You are also safe if your app is put in the background. All the uploads will continue to be executed also when your device is idle.

Bear in mind that if you kill your app, the service gets killed as well, as it's attached to your app's process and all the currently running uploads will be terminated abruptly.

Powered by Android Upload Service

Apps and libraries powered by this library. To be included in the following list, simply create an issue and provide the app name and a link.

Credits

Created my free logo at LogoMakr.com

License

Copyright (C) 2013-2020 Aleksandar Gotev

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Multiple File Upload Notification

    Multiple File Upload Notification

    Hey,

    is there a way to show a notification, which is handling the total progress for multiple file upload (using multiple requests) out of the box?

    Best regards

    question feature request 
    opened by markusf 23
  • Implement Resumable Upload Request

    Implement Resumable Upload Request

    What's pattern this library? Chunk files or resumable file?

    The Google show differences Resumable Chunks

    When down connection the upload can be continue?

    feature request 
    opened by charleston10 21
  • Error During upload

    Error During upload

    hi, am trying to upload mp4 file from device storage but am keep geting error the code am using is

                    UploadService.NAMESPACE = BuildConfig.APPLICATION_ID;
    
                    final String uploadID = UUID.randomUUID().toString();
                    final String serverUrlString = "http://xxyyzz.com/mmff/upload.php";
    
                    try {
    
                        new MultipartUploadRequest(context, uploadID, serverUrlString)
                                .addFileToUpload(Environment.getExternalStorageDirectory().getAbsolutePath() + "/file2.mp4", "your-param-name")
                                .addHeader("your-custom-header-name", "your-custom-value")
                                .addParameter("your-param-name", "your-param-value")
                                .setNotificationConfig(new UploadNotificationConfig())
                                .setMaxRetries(2)
                                .startUpload();
    
                    } catch (Exception exc) {
                        Log.e("AndroidUploadService", exc.getMessage(), exc);
                    }
    
    support 
    opened by firaskudsy 21
  • chunk upload feature

    chunk upload feature

    I needed a chunk upload feature for binary upload and it works fine so far, the main idea is to set a CHUNK_SIZE (default is 5MB) at initialisation and .setChunkUpload(true) in the BinaryUploadRequest request.

    opened by alez007 20
  • android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()

    android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()

    Hi, I sometimes get the following error when the upload finishes and it crashes my app. Any idea or help? The last part after --- is the error. I brought the previous logs to get you an idea of when it does happen. (It is related to uploadservice/UploadService).

    Thanks

    I/UploadService: UploadService - (uploadId: N/A) - Service is about to be stopped because idle timeout of 10s has been reached I/UploadService: NotificationActionsObserver - (uploadId: N/A) - unregistered I/UploadService: UploadService - (uploadId: N/A) - Stopping foreground execution I/UploadService: UploadService - (uploadId: N/A) - UploadService destroyed


    D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: myApp, PID: 5855 android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{5986d70 u0 myApp/net.gotev.uploadservice.UploadService} at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2182) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:8107) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

    android bug 
    opened by Borna-f 19
  • 4.5.0 Bug: Wrong Content-Type when performing Multipart Upload Request

    4.5.0 Bug: Wrong Content-Type when performing Multipart Upload Request

    Describe the bug When I upgrade the lib to 4.5.0, I always get a 413 reply from servers (I tried different servers). These servers are Peertube servers (I tried in different versions of these Peertube servers).

    I downgraded the lib to 4.4.2

    To Reproduce It's not so easy as it needs to use the app at https://github.com/stom79/TubeLab/tree/update_upload Code:

    Upload activity :https://github.com/stom79/TubeLab/blob/update_upload/app/src/main/java/app/fedilab/fedilabtube/PeertubeUploadActivity.java GlobalUploadObserver: https://github.com/stom79/TubeLab/blob/update_upload/app/src/main/java/app/fedilab/fedilabtube/services/GlobalUploadObserver.java Application: https://github.com/stom79/TubeLab/blob/update_upload/app/src/main/java/app/fedilab/fedilabtube/FedilabTube.java

    Steps to reproduce the behavior:

    1. Create or use an account on Peertube
    2. Click on upload a video
    3. Select a video and click upload

    Expected behavior Get a 200 reply from servers like I get when using 4.4.2

    OS and Lib versions (please complete the following information):

    • Android Upload Service version: 4.5.0
    • Android version and API version: Android 10
    • HTTP stack: OkHttpStack

    Request code:

    new MultipartUploadRequest(PeertubeUploadActivity.this, "https://" + Helper.getLiveInstance(PeertubeUploadActivity.this) + "/api/v1/videos/upload")
                                .setMethod("POST")
                                .setBearerAuth(token)
                                .addHeader("User-Agent", getString(R.string.app_name) + "/" + BuildConfig.VERSION_NAME)
                                .addParameter("privacy", String.valueOf(idPrivacy))
                                .addParameter("nsfw", "false")
                                .addParameter("name", filename)
                                .addParameter("commentsEnabled", "true")
                                .addParameter("downloadEnabled", "true")
                                .addParameter("waitTranscoding", "true")
                                .addParameter("channelId", idChannel)
                                .addFileToUpload(uri.toString(), "videofile")
                                .setNotificationConfig((context, uploadId) -> getNotificationConfig(uploadId))
                                .setMaxRetries(2)
                                .startUpload();
    

    Where have you added the request code?

    • [x] Activity
    • [ ] Service
    • [ ] Other class (add additional info about it)

    Debug Log:

    MultipartUploadTask - (uploadId: 982d1af5-8b54-419a-a59d-1098ac9f44c6) - Server response: code 413, body 
    2020-11-21 09:36:49.520 27553-31691/app.fedilab.tubelab I/UploadService: UploadTask - (uploadId: 982d1af5-8b54-419a-a59d-1098ac9f44c6) - upload error
    2020-11-21 09:36:49.555 27553-27553/app.fedilab.tubelab W/System.err: net.gotev.uploadservice.exceptions.UploadError: Upload error
    2020-11-21 09:36:49.556 27553-27553/app.fedilab.tubelab W/System.err:     at net.gotev.uploadservice.UploadTask.onResponseReceived(UploadTask.kt:237)
    2020-11-21 09:36:49.556 27553-27553/app.fedilab.tubelab W/System.err:     at net.gotev.uploadservice.HttpUploadTask.upload(HttpUploadTask.kt:65)
    2020-11-21 09:36:49.557 27553-27553/app.fedilab.tubelab W/System.err:     at net.gotev.uploadservice.UploadTask.run(UploadTask.kt:144)
    2020-11-21 09:36:49.557 27553-27553/app.fedilab.tubelab W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    2020-11-21 09:36:49.557 27553-27553/app.fedilab.tubelab W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    2020-11-21 09:36:49.557 27553-27553/app.fedilab.tubelab W/System.err:     at java.lang.Thread.run(Thread.java:919)
    

    From server:

    {"message":"xx.xx.xx.xx - - [20/Nov/2020:17:37:07 +0000] \"POST /api/v1/videos/upload HTTP/1.1\" 413 - \"-\" \"Tubelab/fdroid_full\"\n","level":"info","label":"example.com:443","timestamp":"2020-11-20T17:37:07.396Z"}
    
    bug 
    opened by ghost 19
  • [Upload Video 2.2GB] Upload large file

    [Upload Video 2.2GB] Upload large file

    Describe the bug I run sample and upload big file, but not work

    javax.net.ssl.SSLException: Write error: ssl=0x7a5418f8c8: I/O error during system call, Broken pipe
           at com.android.org.conscrypt.NativeCrypto.SSL_write(Native Method)
           at com.android.org.conscrypt.NativeSsl.write(NativeSsl.java:426)
           at com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLOutputStream.write(ConscryptFileDescriptorSocket.java:660)
           at okio.OutputStreamSink.write(JvmOkio.kt:53)
           at okio.AsyncTimeout$sink$1.write(AsyncTimeout.kt:103)
           at okio.RealBufferedSink.flush(RealBufferedSink.kt:247)
           at okhttp3.internal.http1.Http1ExchangeCodec$KnownLengthSink.flush(Http1ExchangeCodec.kt:276)
           at okio.ForwardingSink.flush(ForwardingSink.kt:32)
           at okhttp3.internal.connection.Exchange$RequestBodySink.flush(Exchange.kt:228)
           at okio.RealBufferedSink.flush(RealBufferedSink.kt:250)
           at net.gotev.uploadservice.okhttp.OkHttpBodyWriter.flush(OkHttpBodyWriter.kt:25)
           at net.gotev.uploadservice.network.BodyWriter.write(BodyWriter.kt:67)
           at net.gotev.uploadservice.network.BodyWriter.writeStream(BodyWriter.kt:42)
           at net.gotev.uploadservice.protocols.multipart.MultipartUploadTask.writeFiles(MultipartUploadTask.kt:52)
           at net.gotev.uploadservice.protocols.multipart.MultipartUploadTask.onWriteRequestBody(MultipartUploadTask.kt:81)
           at net.gotev.uploadservice.okhttp.OkHttpStackRequest$createBody$1.writeTo(OkHttpStackRequest.kt:76)
           at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:59)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
           at net.gotev.uploadservicedemo.App.lambda$getOkHttpClient$1(App.java:87)
           at net.gotev.uploadservicedemo.-$$Lambda$App$i1SOtWVwIE4ECfByutde1MWQaGw.intercept(Unknown Source:0)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
           at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
           at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
           at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
           at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
           at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:212)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
           at net.gotev.uploadservicedemo.App.lambda$getOkHttpClient$0(App.java:76)
           at net.gotev.uploadservicedemo.-$$Lambda$App$2XvpshJlC8JG_AkWVft4Xf_QR38.intercept(Unknown Source:0)
           at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
           at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
           at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
           at net.gotev.uploadservice.okhttp.OkHttpStackRequest.getResponse(OkHttpStackRequest.kt:95)
           at net.gotev.uploadservice.HttpUploadTask.upload(HttpUploadTask.kt:49)
           at net.gotev.uploadservice.UploadTask.run(UploadTask.kt:140)
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
           at java.lang.Thread.run(Thread.java:919)
       	Suppressed: java.net.ProtocolException: unexpected end of stream
           at okhttp3.internal.connection.Exchange$RequestBodySink.close(Exchange.kt:239)
           at okio.RealBufferedSink.close(RealBufferedSink.kt:268)
           at net.gotev.uploadservice.okhttp.OkHttpBodyWriter.close(OkHttpBodyWriter.kt:30)
           at kotlin.io.CloseableKt.closeFinally(Closeable.kt:60)
    2020-08-25 13:57:43.367 6397-21586/net.gotev.uploadservicedemo E/UploadService:     at net.gotev.uploadservice.okhttp.OkHttpStackRequest$createBody$1.writeTo(OkHttpStackRequest.kt:75)
    

    To Reproduce Steps to reproduce the behavior:

    1. Open App
    2. New Multipart Upload
    3. Input link, header, add file
    4. Click check icon on right top
    5. Progress to 14% and broken

    Device: Android 10 Samsung A30

    opened by chihung93 19
  • Catching strange compile error

    Catching strange compile error

    When I just include your dependency into my gradle project I'm catching this

    Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
    

    Any other requirements to be met?

    support 
    opened by neilyoung 18
  • Upload file on Akamai Server

    Upload file on Akamai Server

    Uploads to Akami servers fail.

    From what I was told, this was because not Content-Length was being passed in the headers. After a lot of debugging, turns out conn.setChunkedStreamingMode(0) is the issue. Setting the chucked mode sends by default data is 1024 bytes and it sends headers with each bit of data. I would recommend removing this option.

    enhancement 
    opened by alphamu 18
  • Start upload files display TransactionTooLargeException

    Start upload files display TransactionTooLargeException

    Please can you give me information about how can I upload large files?

    Caused by java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 10516560 bytes at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1692) at android.app.ContextImpl.startForegroundService(ContextImpl.java:1638) at android.content.ContextWrapper.startForegroundService(ContextWrapper.java:688) at net.gotev.uploadservice.extensions.ContextExtensionsKt.startNewUpload(ContextExtensions.kt:31) at net.gotev.uploadservice.UploadRequest.startUpload(UploadRequest.kt:54) at net.gotev.uploadservice.observer.request.RequestObserver.subscribe(RequestObserver.kt:52) at net.gotev.uploadservice.UploadRequest.subscribe(UploadRequest.kt:82)

    opened by EngKhAboshama 17
  • OkHttp interceptors are not supported when using OkHttp Stack

    OkHttp interceptors are not supported when using OkHttp Stack

    I was trying to upload an image to a protected service that requires an autorization header but it's failing. The headers are set on a OkHttp interceptor, also I tried to add an OkHttp logging interceptor and is not logging anything. Is the library overwritting the OkHttp interceptors?

    opened by emanzanoaxa 17
  • build(deps): bump express from 4.17.1 to 4.17.3 in /examples/server-nodejs

    build(deps): bump express from 4.17.1 to 4.17.3 in /examples/server-nodejs

    Bumps express from 4.17.1 to 4.17.3.

    Release notes

    Sourced from express's releases.

    4.17.3

    4.17.2

    Changelog

    Sourced from express's changelog.

    4.17.3 / 2022-02-16

    4.17.2 / 2021-12-16

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 0
  • build(deps): bump qs and express in /examples/server-nodejs

    build(deps): bump qs and express in /examples/server-nodejs

    Bumps qs to 6.11.0 and updates ancestor dependency express. These dependencies need to be updated together.

    Updates qs from 6.7.0 to 6.11.0

    Changelog

    Sourced from qs's changelog.

    6.11.0

    • [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option (#442)
    • [readme] fix version badge

    6.10.5

    • [Fix] stringify: with arrayFormat: comma, properly include an explicit [] on a single-item array (#434)

    6.10.4

    • [Fix] stringify: with arrayFormat: comma, include an explicit [] on a single-item array (#441)
    • [meta] use npmignore to autogenerate an npmignore file
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, object-inspect, tape

    6.10.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [actions] reuse common workflows
    • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, tape

    6.10.2

    • [Fix] stringify: actually fix cyclic references (#426)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [actions] update codecov uploader
    • [actions] update workflows
    • [Tests] clean up stringify tests slightly
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, object-inspect, safe-publish-latest, tape

    6.10.1

    • [Fix] stringify: avoid exception on repeated object values (#402)

    6.10.0

    • [New] stringify: throw on cycles, instead of an infinite loop (#395, #394, #393)
    • [New] parse: add allowSparse option for collapsing arrays with missing indices (#312)
    • [meta] fix README.md (#399)
    • [meta] only run npm run dist in publish, not install
    • [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbols, tape
    • [Tests] fix tests on node v0.6
    • [Tests] use ljharb/actions/node/install instead of ljharb/actions/node/run
    • [Tests] Revert "[meta] ignore eclint transitive audit warning"

    6.9.7

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] stringify: avoid encoding arrayformat comma when encodeValuesOnly = true (#424)
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] add note and links for coercing primitive values (#408)
    • [Tests] clean up stringify tests slightly
    • [meta] fix README.md (#399)
    • Revert "[meta] ignore eclint transitive audit warning"

    ... (truncated)

    Commits
    • 56763c1 v6.11.0
    • ddd3e29 [readme] fix version badge
    • c313472 [New] [Fix] stringify: revert 0e903c0; add commaRoundTrip option
    • 95bc018 v6.10.5
    • 0e903c0 [Fix] stringify: with arrayFormat: comma, properly include an explicit `[...
    • ba9703c v6.10.4
    • 4e44019 [Fix] stringify: with arrayFormat: comma, include an explicit [] on a s...
    • 113b990 [Dev Deps] update object-inspect
    • c77f38f [Dev Deps] update eslint, @ljharb/eslint-config, aud, has-symbol, tape
    • 2cf45b2 [meta] use npmignore to autogenerate an npmignore file
    • Additional commits viewable in compare view

    Updates express from 4.17.1 to 4.18.2

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies javascript 
    opened by dependabot[bot] 0
  • build(deps): bump commons-net from 3.8.0 to 3.9.0

    build(deps): bump commons-net from 3.8.0 to 3.9.0

    Bumps commons-net from 3.8.0 to 3.9.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 0
  • memory leak

    memory leak

    ├─ android.os.PowerManager$WakeLock instance │ Leaking: UNKNOWN │ Retaining 3.5 kB in 51 objects │ ↓ PowerManager$WakeLock.this$0 │ ~~~~~~ ├─ android.os.PowerManager instance │ Leaking: UNKNOWN │ Retaining 3.3 kB in 48 objects │ mContext instance of net.gotev.uploadservice.UploadService │ ↓ PowerManager.mContext │ ~~~~~~~~ ╰→ net.gotev.uploadservice.UploadService instance ​ Leaking: YES (ObjectWatcher was watching this because net.gotev.uploadservice.UploadService received Service#onDestroy() callback and Service not held by ActivityThread) ​ Retaining 1.8 kB in 31 objects

    opened by ttdazi 1
Releases(4.7.0)
Owner
Alex Gotev
Senior software developer. I develop for Android, iOS and backend.
Alex Gotev
Kotlin HTTP requests library. Similar to Python requests.

khttp khttp is a simple library for HTTP requests in Kotlin. It functions similarly to Python's requests module. import khttp.get fun main(args: Arra

Anna Clemens 466 Dec 20, 2022
android webview choose file to upload

Android WebView文件上传 本工程为大家演示在H5中如何上传文件,同时也提供了服务端代码,有兴趣的读者可以部署起来,测试文件上传功能。 如果只对客户端部分感兴趣,只需要关注WebView文件选择部分即可 服务端代码下载地址, 客户端可以用如下url来上传文件 http://your ip

yuzhiqiangqiangqiang 57 Sep 20, 2022
Pluto is a on-device debugger for Android applications, which helps in inspection of HTTP requests/responses, capture Crashes and ANRs and manipulating application data on-the-go.

Pluto Pluto is a on-device debugger for Android applications, which helps in inspection of HTTP requests/responses, capture Crashes and ANRs and manip

Mocklets 8 Aug 22, 2022
A small Android project to practice executing network requests and parsing the network response

InspirationalQuotesExercise A small Android project to practice executing network requests and parsing the network response This app uses the ZenQuote

Caren 0 Oct 13, 2021
SimpleApiCalls is a type-safe REST client for Android. The library provides the ability to interact with APIs and send network requests with HttpURLConnection.

SimpleApiCalls ?? SimpleApiCalls is a type-safe REST client for Android. The library provides the ability to interact with APIs and send network reque

null 4 Nov 28, 2022
super simple library to manage http requests.

HttpAgent super simple library to manage http requests. Gradle dependencies { implementation 'com.studioidan.httpagent:httpagent:1.0.16@aar' } No

idan ben shimon 32 Oct 24, 2021
Whois4K - A library for who is requests

Whois4K - A library for who is requests

Lyzev 1 Apr 6, 2022
CheckInternetConnection - CheckInternetConnection helps to find out if user`s Android device is connected to Internet or not

Check Internet Connection CheckInternetConnection helps to find out if user`s An

Hamed.D 1 Jan 16, 2022
A service storing files in the cloud, providing a link for downloading.

Zippy The Werewolf About A service storing files in the cloud, providing a link for downloading. The basic idea Zippy The Werewolf will accept any fil

null 1 Mar 17, 2022
HttpMocker is a simple HTTP mocking library written in Kotlin to quickly and easily handle offline modes in your apps

HttpMocker HttpMocker is a very lightweight Kotlin library that allows to mock HTTP calls relying on either OkHttp or the Ktor client libraries. It ca

David Blanc 174 Nov 28, 2022
Android network client based on Cronet. This library let you easily use QUIC protocol in your Android projects

Android network client based on Cronet. This library let you easily use QUIC protocol in your Android projects

VK.com 104 Dec 12, 2022
Light library to check internet connection in android apps easily.

check-internet-android Light library to check internet connection in android apps easily. It checks real internet connection by connecting to Google's

Raheem 7 Nov 15, 2022
Support for Spring's RestTemplate within native Android applications

Spring for Android Spring for Android is a library that is designed to provide components of the Spring Framework family of projects for use in native

Spring 710 Dec 20, 2022
A downloader to help in downloading to custom folders

Murerwa Downloader (Still in development) Murerwa downloader is a custom downloader library beside the default Android downloader that helps users dow

Kenneth Murerwa 5 Mar 31, 2022
An App to download a file from Internet by clicking on a custom-built button

LoadApp LoadApp is an app to download a file from the Internet by clicking on a custom-built button where: Width of the button gets animated from left

Anas Tariq 2 Aug 29, 2022
Monitoring water tanker level using NodeMCU ESP8266 and HC-SR04P Ultrasonic Sensor and broadcasting it using a simple HTTP server inside NodeMCU ESP8266 and show data in an Android App

WaterLevel Preface This project aims to finding a tanker water level using NodeMCU with ESP8266 core and HC-SR04P Ultrasonic sensor and broadcasting i

YaMiN 12 Dec 20, 2022
LiteHttp is a simple, intelligent and flexible HTTP framework for Android. With LiteHttp you can make HTTP request with only one line of code! It could convert a java model to the parameter and rander the response JSON as a java model intelligently.

Android network framework: LiteHttp Tags : litehttp2.x-tutorials Website : http://litesuits.com QQgroup : 42960650 , 47357508 Android网络通信为啥子选 lite-htt

马天宇 829 Dec 29, 2022
A gRPC Kotlin based server and client starter that builds with Gradle and runs on the JVM

gRPC Kotlin starter Overview This directory contains a simple bar service written as a Kotlin gRPC example. You can find detailed instructions for bui

Hypto 8 Sep 19, 2022
A product registration service using the Kotlin language and the Micronaut and Grpc framework

A product registration service using the Kotlin language and the Micronaut and Grpc framework

Mateus Araújo 30 Nov 2, 2022