Git Product home page Git Product logo

gligar's Introduction

OpenSooq logo

Gliger [Android Image Picker Library]

API API License Download Android Arsenal

⭐ Star us on GitHub — it helps!

forthebadge

Gliger is an Easy, lightweight and high performance image picker library for Android!
Gliger load images using Android content resolver with the help of coroutines to lazy load the images and improve the performance!
Gliger handle permission requests, support camera capture, and limit for the max number of images to pick.

Demo

Table of content

Download

This library is available in jCenter which is the default Maven repository used in Android Studio. You can also import this library from source as a module.

dependencies {
    // other dependencies here
    implementation 'com.opensooq.supernova:gligar:1.1.0'
}

Sample Project

We have a sample project demonstrating how to use the library.

Checkout the demo here

Usage

Simpler than ever!

To open the Picker:

Kotlin

GligarPicker().requestCode(PICKER_REQUEST_CODE).withActivity(this).show()

Java

new GligarPicker().requestCode(PICKER_REQUEST_CODE).withActivity(this).show();

To get the result override onActivityResult method:

Kotlin

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode != Activity.RESULT_OK) {
            return
        }

        when (requestCode) {
            PICKER_REQUEST_CODE -> {
                val imagesList = data?.extras?.getStringArray(GligarPicker.IMAGES_RESULT)// return list of selected images paths.
                if (!imagesList.isNullOrEmpty()) {
                    imagesCount.text = "Number of selected Images: ${imagesList.size}"
                }
            }
        }
    }

Java

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode != Activity.RESULT_OK) {
            return;
        }
        switch (requestCode){
            case PICKER_REQUEST_CODE : {
              String pathsList[]= data.getExtras().getStringArray(GligarPicker.IMAGES_RESULT); // return list of selected images paths.
                imagesCount.text = "Number of selected Images: " + pathsList.length;
                break;
            }   
        }
    }
Method usage
withActivity(activity: Activity) used to set the activity will recive the result
withFragment(fragment: Fragment) used to set the fragment will recive the result
requestCode(requestCode: Int) used to set the request code for the result
limit(limit: Int) used to set the max number of images to select
disableCamera(disableCamera: Boolean) by default the value of disableCamera is false, it determine to allow camera captures or not
cameraDirect(cameraDirect: Boolean) by default the value of cameraDirect is false, it determine to open the camera before showing the picker or not

UI customization

Customizable Colors

override any color to change inside your project colors.xml

Property Description
counter_bg selection counter background color
counter_color selection counter text color
selector_color selection tint color
place_holder_color empty image holder color
ripple_color selection ripple color
toolbar_bg toolbar color
done Done button color
change_album_color change album text color
camera_icon_color camera icon color
camera_text_color camera text color
permission_alert_bg permission alert background color
permission_alert_color permission alert text color

Customizable Texts

override any string to change inside your project strings.xml

Property Description
over_limit_msg selection limit reached message
capture_new_image capture image text
change_album_text change album text
permission_storage_never_ask permission denied message
all_images all images album name

License

Copyright 2019 OpenSooq

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.

gligar's People

Contributors

hani-momanii avatar monsterbrain 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

gligar's Issues

Merge manifest

Hi, Could do explain to me why I have to merge manifest of my app to use provider to your api why I need for that
Thanks a lot

android 11 issue

java.lang.IllegalArgumentException: Invalid token LIMIT
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:472)
at android.content.ContentResolver.query(ContentResolver.java:1183)
at android.content.ContentResolver.query(ContentResolver.java:1115)
at android.content.ContentResolver.query(ContentResolver.java:1071)
at com.opensooq.supernova.gligar.dataSource.ImagesDataSource.loadAlbumImages(ImagesDataSource.kt:64)
at com.opensooq.supernova.gligar.ui.PickerViewModel$getImages$2.invokeSuspend(PickerViewModel.kt:99)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)
my code to launch it:
new GligarPicker().requestCode(PICKER_REQUEST_CODE).withActivity(this).show();

Set selected Images when open the activity again

Hello,
Thank you for this beautiful lib. But I need when user select Images and click open the activity again he must show the previous selected images is marked. what if he select 10 images then he he want to add another one!
Thank you

Camera captured image not shown in gallery.

If we select the camera to click picture then it shows the image in grid for then . But when we open the gallery app then that captured images are not shown in gallery.

-Device :Asus Max Pro M1

  • OS: Android Pie

Crash on android 12

2022-04-30 15:10:01.343 21348-21348/com.example.imagepicker E/ThemeUtils: View class androidx.appcompat.widget.AppCompatTextView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
2022-04-30 15:10:01.350 21348-21348/com.example.imagepicker E/ThemeUtils: View class androidx.appcompat.widget.AppCompatTextView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
2022-04-30 15:10:01.368 21348-21348/com.example.imagepicker E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.imagepicker, PID: 21348
java.lang.IllegalArgumentException: Invalid token LIMIT
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:481)
at android.content.ContentResolver.query(ContentResolver.java:1226)
at android.content.ContentResolver.query(ContentResolver.java:1158)
at android.content.ContentResolver.query(ContentResolver.java:1114)
at com.opensooq.supernova.gligar.dataSource.ImagesDataSource.loadAlbumImages(ImagesDataSource.kt:64)
at com.opensooq.supernova.gligar.ui.PickerViewModel$getImages$2.invokeSuspend(PickerViewModel.kt:99)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Java limit error

With using it in Java:

java.lang.IllegalArgumentException: Invalid token LIMIT
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
    at android.content.ContentProviderProxy.query(ContentProviderNative.java:472)
    at android.content.ContentResolver.query(ContentResolver.java:1183)
    at android.content.ContentResolver.query(ContentResolver.java:1115)
    at android.content.ContentResolver.query(ContentResolver.java:1071)
    at com.opensooq.supernova.gligar.dataSource.ImagesDataSource.loadAlbumImages(ImagesDataSource.kt:64)
    at com.opensooq.supernova.gligar.ui.PickerViewModel$getImages$2.invokeSuspend(PickerViewModel.kt:99)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)

my code to launch it:
new GligarPicker().requestCode(PICKER_REQUEST_CODE).withActivity(this).show();

when open camera in android 9 huawei y8s

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.menelmalik, PID: 22494
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 1492168 bytes
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:160)
at android.os.Handler.handleCallback(Handler.java:907)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
Caused by: android.os.TransactionTooLargeException: data parcel size 1492168 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:1149)
at android.app.IActivityManager$Stub$Proxy.activityStopped(IActivityManager.java:4005)
at android.app.servertransaction.PendingTransactionActions$StopInfo.run(PendingTransactionActions.java:144)
at android.os.Handler.handleCallback(Handler.java:907) 
at android.os.Handler.dispatchMessage(Handler.java:105) 
at android.os.Looper.loop(Looper.java:216) 
at android.app.ActivityThread.main(ActivityThread.java:7625) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987) 

Illegal State Exception thrown in Android OS 10

IllegalStateException is thrown when the user picks the images from the library's gallery

Fatal Exception: java.lang.IllegalStateException: albumCursor.getString(al…dex(DISPLAY_NAME_COLUMN)) must not be null
at com.opensooq.supernova.gligar.dataSource.ImagesDataSource$loadAlbums$1.invoke(ImagesDataSource.java:40)
at com.opensooq.supernova.gligar.dataSource.ImagesDataSource$loadAlbums$1.invoke(ImagesDataSource.java:22)
at com.opensooq.supernova.gligar.utils.ExtKt.doWhile(ExtKt.java:26)
at com.opensooq.supernova.gligar.dataSource.ImagesDataSource.loadAlbums(ImagesDataSource.java:38)
at com.opensooq.supernova.gligar.ui.PickerViewModel$getAlbums$2.invokeSuspend(PickerViewModel.java:104)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(BaseContinuationImpl.java:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.java:241)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.java:594)
at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.java:60)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.java:740)

Not working in Android 13

Describe the bug
Images is not visible and print snack bar The permission to access Files is not granted, please go to settings to grant it

Screenshots
image

Smartphone (please complete the following information):

  • Device: OnePlus Nord CE 3 Lite
  • OS: Oxigene

Unable to start Gligar activity

Starting the image picker crashes on some devices sometimes. I dont know why. Any idea what the following is about:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{rstls.pdfbook/com.opensooq.supernova.gligar.ui.ImagePickerActivity}: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Integer
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3488)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3635)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2175)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7860)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

AND

Caused by java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Integer
at com.opensooq.supernova.gligar.ui.PickerViewModel.loadSaveState$gligar_release(PickerViewModel.java:205)
at com.opensooq.supernova.gligar.ui.ImagePickerActivity.onCreate(ImagePickerActivity.java:118)
at android.app.Activity.performCreate(Activity.java:7955)
at android.app.Activity.performCreate(Activity.java:7944)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3463)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3635)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2175)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7860)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

This never happened on my test devices so I cannot give any more details. But this seems to constantly happen to about 2% of my users.

I am a beginner so this might be due to some fault of mine? I am confused because this happens only "sometimes" to "some users". Do I have to declare this activity in the AndroidManifest even if its imported or how does this work.

Crash in PickerViewModel

We found out a crash Unable to start activity ComponentInfo{com.ilikeyou/com.opensooq.supernova.gligar.ui.ImagePickerActivity}: java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Integer
android.app.ActivityThread.performLaunchActivity

image

Camera does not open

Describe the bug

Getting following error when selecting the camera option.
I tried the same function after wiping emulator and on an android 10 device.
Is there any method to provide a custom file provider to Gligar instance?

E/Picker: Failed to find configured root that contains /storage/emulated/0/Android/data/{PACKAGE}/files/Pictures/JPEG_20210411_124746_450436341.jpg

To Reproduce
Steps to reproduce the behavior:

  1. Click on camera button on the gallery view
  2. Camera interface doesn't open and getting the previously mentioned error

Expected behavior
Camera interface should appear and allow user to capture images

Screenshots
If applicable, add screenshots to help explain your problem.
image

Include stack trace if exist

E/Picker: Failed to find configured root that contains /storage/emulated/0/Android/data/PACKAGE/files/Pictures/JPEG_20210411_124746_450436341.jpg
java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/Android/data/PACKAGE/files/Pictures/JPEG_20210411_124746_450436341.jpg
at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:744)
at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:418)
at com.opensooq.supernova.gligar.ui.ImagePickerActivity.cameraPermissionGranted(ImagePickerActivity.kt:145)
at com.opensooq.supernova.gligar.ui.ImagePickerActivity.checkCameraPermission(ImagePickerActivity.kt:169)
at com.opensooq.supernova.gligar.ui.ImagePickerActivity.openCamera(ImagePickerActivity.kt:127)
at com.opensooq.supernova.gligar.ui.ImagePickerActivity.onItemClicked(ImagePickerActivity.kt:256)
at com.opensooq.supernova.gligar.adapters.ImagesAdapter$onBindViewHolder$1.onClick(ImagesAdapter.kt:38)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Smartphone (please complete the following information):

  • Device: PIXEL 3 XL & Huawei P30 Lite
  • OS: API 25, Android 10

when camera disabled image at position 0 acts as camera button

Describe the bug
Thanks for the awesome library, However when setting camera disabled to true it only hides the capture new image button however on clicking the image at position 0 the camera is opened

To Reproduce
Steps to reproduce the behavior:

  1. Set camera disabled to true
  2. Click on the first image
  3. Camera will open instead of marking the image as selected

Expected behavior
When camera is disabled images at position 0 should be marked as selected instead of opening the camera

Additional context
The override fun onItemClicked(position: Int) {
when (position) {
0 -> openCamera()
else -> {
mainViewModel.setImageSelection(position, mImagesAdapter?.images)
}
}
} inside ImagePickerActivity ImagePickerActivity should check on the disabledCamera attribute as well not only the position I would have loved to create a branch with the fix in order to support more but am still trying to get the hang of kotlin

Camera stop working

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Include stack trace if exist

Smartphone (please complete the following information):

  • Device: [e.g. Pixle2]
  • OS: [e.g. andoird 6 ]

Additional context
Add any other context about the problem here.

Android support isn't support in latest Glide

Describe the bug
Gligar currently uses Glide version 4.9 which still use Android support lib. Alot of apps(like mine) are excluding Android support lib and use AndroidX instead.

Solution:
Upgrade to Glide 4.11 (That use only AndroidX) will solve this issue.
Thanks!

Crash on Android 11

Describe the bug
Application crashes when gligar activity is launched (After allow permissions for the first time too).

To Reproduce
Steps to reproduce the behavior:

  1. Launch gligar activity.
  2. Allow permissions.
  3. App will crash.

Expected behavior
Show the list of local image files.

Include stack trace if exist
E/ThemeUtils: View class androidx.appcompat.widget.AppCompatTextView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
E/ThemeUtils: View class androidx.appcompat.widget.AppCompatTextView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
E/AndroidRuntime: FATAL EXCEPTION: main
Process: avanceingenieros.com.app, PID: 6152
java.lang.IllegalArgumentException: Invalid token LIMIT
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:472)
at android.content.ContentResolver.query(ContentResolver.java:1183)
at android.content.ContentResolver.query(ContentResolver.java:1115)
at android.content.ContentResolver.query(ContentResolver.java:1071)
at com.opensooq.supernova.gligar.dataSource.ImagesDataSource.loadAlbumImages(ImagesDataSource.kt:64)
at com.opensooq.supernova.gligar.ui.PickerViewModel$getImages$2.invokeSuspend(PickerViewModel.kt:99)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Smartphone (please complete the following information):

  • Device: Pixel 4XL (Emulator)
  • OS: Android 11

App crash when take photo if have two camera apps ( system camera app + open camera )

Describe the bug
App crash when take photo if have two camera apps ( system camera app + open camera )

To Reproduce
Steps to reproduce the behavior:
Open camera direct or camera from gallery with two camera app on phone

Expected behavior
after selecting the app to use to take the image (system or other) it should work without app crash

Screenshots
If applicable, add screenshots to help explain your problem.

Include stack trace if exist

Smartphone (please complete the following information):

  • Device: Motorola g8 plus
  • OS: Android 10

Additional context
Add any other context about the problem here.

define the type of image displayed

Good morning,
I found your library Gliger on the Internet and I am using it in my project and I want to limit the gallery selector only with the jpg extension and I did not find how to do it, can you help me ?
Thank you

We can also add in which way you open a picker in landscape or portrait.

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Crash on Android 11

Describe the bug
crash on android 11 bro

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Include stack trace if exist

Smartphone (please complete the following information):

  • Device: [e.g. Pixle2]
  • OS: [e.g. andoird 6 ]

Additional context
Add any other context about the problem here.

complilation error in andrroidX when we put this library to our project having problem default activity not found after removing this library studio build successfully having no error.

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Include stack trace if exist

Smartphone (please complete the following information):

  • Device: [e.g. Pixle2]
  • OS: [e.g. andoird 6 ]

Additional context
Add any other context about the problem here.

create a singleSelection() function that let user chose single image

this has two problems, first it wont let any other image selected as it requires second user will have to deselect and then only it can select new image and proceeded with it,

either this
new Gligar().requestCode(PICKER_REQUEST_CODE).withFragment(this).limit(1).show()
should allow selection of other images while one is selected or setSingleSelection(true) should be made that could introduce such behavior

Praises to creator

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.