Giter Site home page Giter Site logo

alhazmy13 / mediapicker Goto Github PK

View Code? Open in Web Editor NEW
268.0 10.0 84.0 415 KB

Media Picker is an Android Libary that lets you to select multiple images or video

Home Page: alhazmy13.net

License: Apache License 2.0

Java 100.00%
mediapicker android video media images picker

mediapicker's Introduction

Media Picker

Codacy Badge

Media Picker is an Android Libary that lets you to select multiple images, video or voice for Android 4.1 (API 16) +. You can report any issue on issues page. Note: If you speak Arabic, you can submit issues with Arabic language and I will check them. :)

NOTE


This build 2.x.x will break backward compatibility and there are a lot of changes to improve the performance and fix a lot of Leak memory issues, So please read below document carefully.

Installation


Maven

<dependency>
<groupId>net.alhazmy13.MediaPicker</groupId>
<artifactId>libary</artifactId>
<version>2.4.4</version>
</dependency>

Gradle

dependencies {
	implementation 'net.alhazmy13.MediaPicker:libary:2.4.4'
}

Usage


Images

After adding the library, you need to:

  1. Create an object from ImagePicker or VideoPicker
  2. Override onActivityResult to receive the path of image or videos.

Create an ImagePicker

You will need to create a new instance of ImagePicker. Once the instance are configured, you can call build().

        new ImagePicker.Builder(MainActivity.this)
                        .mode(ImagePicker.Mode.CAMERA_AND_GALLERY)
                        .compressLevel(ImagePicker.ComperesLevel.MEDIUM)
                        .directory(ImagePicker.Directory.DEFAULT)
                        .extension(ImagePicker.Extension.PNG)
                        .scale(600, 600)
                        .allowMultipleImages(false)
                        .enableDebuggingMode(true)
                        .build();

Override onActivityResult

In order to receive the path of image, you will need to override onActivityResult .

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == ImagePicker.IMAGE_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
            List<String> mPaths = data.getStringArrayListExtra(ImagePicker.EXTRA_IMAGE_PATH);
            //Your Code
        }
    }

Additional Options

  • mode to select the mode, you can choose one of these CAMERA,GALLERY or CAMERA_AND_GALLERY
.mode(ImagePicker.Mode.CAMERA)
  • extension You can change the extension of image to PNG or JPG
.extension(ImagePicker.Extension.PNG)
  • compressLevel You can change the quality of image with three different levels HARD,MEDIUM, SOFT or NONE
.compressLevel(ImagePicker.ComperesLevel.MEDIUM)
  • directory You can pass the storage path, or select Directory.DEFAULT_DIR to keep the default path.
.directory(ImagePicker.Directory.DEFAULT)

//OR

.directory(Environment.getExternalStorageDirectory()+"/myFolder")
  • scale You can scale the image to a a minimum width and height. This will only be used if compressLevel is set. To avoid OutOfMemory issues, ensure this is used.
.scale(500, 500)
  • allowMultipleImages Extra used to select and return multiple images from gallery CANNOT select single image from gallery if this feature was enabled
	.allowMultipleImages(true)
  • enableDebuggingMode used to print Image Picker Log
	.enableDebuggingMode(true)
  • allowOnlineImages an option to allow the user to select any image from online resource ex: Google Drive (KNOWN ISSUE) if you enable this option then you cannot select multiple images
	.allowOnlineImages(true)

Create an VideoPicker

You will need to create a new instance of VideoPicker. Once the instance are configured, you can call build().

        new VideoPicker.Builder(MainActivity.this)
                        .mode(VideoPicker.Mode.CAMERA_AND_GALLERY)
                        .directory(VideoPicker.Directory.DEFAULT)
                        .extension(VideoPicker.Extension.MP4)
                        .enableDebuggingMode(true)
                        .build();

Override onActivityResult

In order to receive the path of videos, you will need to override onActivityResult .

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == VideoPicker.VIDEO_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
            List<String> mPaths =  data.getStringArrayListExtra(VideoPicker.EXTRA_VIDEO_PATH);
            //Your Code
        }
    }

Additional Options

  • mode to select the mode, you can choose one of these CAMERA,GALLERY or CAMERA_AND_GALLERY
.mode(VideoPicker.Mode.CAMERA)
  • extension You can change the extension of video to MP4
.extension(VideoPicker.Extension.MP4)
  • directory You can pass the storage path, or select Directory.DEFAULT_DIR to keep the default path.
.directory(VideoPicker.Directory.DEFAULT)

//OR

.directory(Environment.getExternalStorageDirectory()+"/myFolder")
  • enableDebuggingMode used to print Video Picker Log
	.enableDebuggingMode(true)

RxJava 2 for MediaPicker

It's an extenstion that allow you to return an observable from ImagePickerBuilder or VideoPickerBuilder, all you need is to add below dependency and then return the observable from ImagePickerHelper || VideoPickerHelper class.

Gradle

dependencies {
  implementation 'io.reactivex.rxjava2:rxandroid:(Last_version)'
  implementation 'io.reactivex.rxjava2:rxjava:(Last_version)'
	implementation 'net.alhazmy13.MediaPicker:rxjava:(Last_version)'
}
  new ImagePickerHelper(
        new ImagePicker.Builder(Context)
                ...)
                .getObservable()
                .subscribe(....);

Theme the pickers

You can change the strings be overwriting below resources in your project.

    <string name="media_picker_select_from">Select From:</string>
    <string name="media_picker_camera">Camera</string>
    <string name="media_picker_gallery">Gallery</string>
    <string name="media_picker_ok">Ok</string>
    <string name="media_picker_cancel">Cancel</string>
    <string name="media_picker_some_permission_is_denied">Some Permission is Denied</string>
    <string name="media_picker_you_need_to_grant_access_to">You need to grant access to</string>
    <string name="media_picker_read_Write_external_storage"><![CDATA[Read & Write External Storage]]></string>

mediapicker's People

Contributors

alhazmy13 avatar blank15 avatar codacy-badger avatar ibrahimghailani avatar jkpatel1463 avatar mikemike396 avatar mrthegood avatar mustafa-nimir avatar nerdfaisal404 avatar noone1521 avatar prfarlow1 avatar saschpe avatar serhiisolobaievuptech avatar wesleylemke 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

mediapicker's Issues

No Activity to handle video Action_pick intent

Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK typ=video/* }
                                                                             at 
   android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1781)
                                                                             at 
android.app.Instrumentation.execStartActivity(Instrumentation.java:1501)
                                                                             at 
android.app.Activity.startActivityForResult(Activity.java:3745)
                                                                             at 
android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
                                                                             at 
android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
                                                                             at 
android.app.Activity.startActivityForResult(Activity.java:3706)
                                                                             at 
android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:871)
                                                                                 at 
net.alhazmy13.mediapicker.Video.VideoActivity.startActivityFromGallery(VideoActivity.java:108)
                                                                             at 
net.alhazmy13.mediapicker.Video.VideoActivity.pickVideo(VideoActivity.java:72)
                                                                             at 
  net.alhazmy13.mediapicker.Video.VideoActivity.pickImageWrapper(VideoActivity.java:209)
                                                                             at net.alhazmy13.mediapicker.Video.VideoActivity.onCreate(VideoActivity.java:60)
                                                                             at android.app.Activity.performCreate(Activity.java:5990)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
                                                                             at android.app.ActivityThread.access$800(ActivityThread.java:151) 
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                             at android.os.Looper.loop(Looper.java:135) 
                                                                             at android.app.ActivityThread.main(ActivityThread.java:5254) 
                                                                             at java.lang.reflect.Method.invoke(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:372) 

Issue on Android 6

Issue when setting directory on device running Android 6

Logcat:
java.lang.RuntimeException: Unable to start activity ComponentInfo{XXX}: java.lang.IllegalArgumentException: Unknown permission: android.permission-group.STORAGE
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                               at android.os.Looper.loop(Looper.java:148)
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                            Caused by: java.lang.IllegalArgumentException: Unknown permission: android.permission-group.STORAGE
                                                                               at android.os.Parcel.readException(Parcel.java:1603)
                                                                               at android.os.Parcel.readException(Parcel.java:1552)
                                                                               at android.content.pm.IPackageManager$Stub$Proxy.shouldShowRequestPermissionRationale(IPackageManager.java:2683)
                                                                               at android.app.ApplicationPackageManager.shouldShowRequestPermissionRationale(ApplicationPackageManager.java:522)
                                                                               at android.app.Activity.shouldShowRequestPermissionRationale(Activity.java:3861)
                                                                               at android.support.v4.app.ActivityCompatApi23.shouldShowRequestPermissionRationale(ActivityCompat23.java:37)
                                                                               at android.support.v4.app.ActivityCompat.shouldShowRequestPermissionRationale(ActivityCompat.java:363)
                                                                               at net.alhazmy13.mediapicker.Image.ImageActivity.addPermission(ImageActivity.java:133)
                                                                               at net.alhazmy13.mediapicker.Image.ImageActivity.pickImageWrapper(ImageActivity.java:92)
                                                                               at net.alhazmy13.mediapicker.Image.ImageActivity.onCreate(ImageActivity.java:51)
                                                                               at android.app.Activity.performCreate(Activity.java:6237)
                                                                               at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                               at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                               at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                               at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                               at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                               at android.os.Looper.loop(Looper.java:148) 
                                                                               at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                               at java.lang.reflect.Method.invoke(Native Method) 

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.AlertDialog.isShowing()' on a null object reference

Process: com.sprent.customer.dev, PID: 24189 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.AlertDialog.isShowing()' on a null object reference at net.alhazmy13.mediapicker.Image.ImageActivity.onSaveInstanceState(ImageActivity.java:182) at android.app.Activity.performSaveInstanceState(Activity.java:1302) at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1289) at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:4088) at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3490) at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3550) at android.app.ActivityThread.-wrap20(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1368) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

how to find the latest version?

حيث يمكنني العثور على أحدث إصدار من "ترجمة" net.alhazmy13.MediaPicker: رجافا "مكتبة؟

Can't receive the onActivityResult in fragment

Greetings,
Dear Abdullah,

This is an information maybe more than a bug, but the onActivityResult will fire inside fragment.
Instead the main activity will receive the onActivityResult.

Best regards.
Abdulaziz Noor.

NullPointerException on cancelling VideoPicker

If user chooses to upload video through gallery, but then cancels, an app throws NullPointerException.

new VideoPicker.Builder(activity)
.mode(VideoPicker.Mode.CAMERA_AND_GALLERY)
.directory(VideoPicker.Directory.DEFAULT)
.build();

08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.net.Uri android.content.Intent.getData()' on a null object reference
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at net.alhazmy13.mediapicker.Video.VideoActivity.processOneVideo(VideoActivity.java:223)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at net.alhazmy13.mediapicker.Video.VideoActivity.processVideo(VideoActivity.java:203)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at net.alhazmy13.mediapicker.Video.VideoActivity.onActivityResult(VideoActivity.java:176)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at android.app.Activity.dispatchActivityResult(Activity.java:6235)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at android.app.ActivityThread.deliverResults(ActivityThread.java:3570)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at android.app.ActivityThread.handleSendResult(ActivityThread.java:3617)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at android.app.ActivityThread.access$1300(ActivityThread.java:151)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1352)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at android.os.Looper.loop(Looper.java:135)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5254)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at java.lang.reflect.Method.invoke(Native Method)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
08-18 13:49:00.641 25335-25335/com.example.atizik.testrdp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

image is not set

I am using your lib in own project but i face issue image is not set sometime please help

Include more customisation options

I noticed a couple of things that made me move away from picking this library.

  1. The in-built Gallery/Camera dialog
  2. The in-built requestCode

I really loved how simple the library is to use (I've seen worse), but a few more customization options for more advanced users will be wonderful!

Great job otherwise :)

NullPointerException on Xiaomi Redmi 4X (santoni), 3072MB RAM, Android 6.0

java.lang.RuntimeException:
at android.os.AsyncTask$3.done (AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:354)
at java.util.concurrent.FutureTask.setException (FutureTask.java:223)
at java.util.concurrent.FutureTask.run (FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588)
at java.lang.Thread.run (Thread.java:818)
Caused by: java.lang.NullPointerException:
at java.io.File.fixSlashes (File.java:183)
at java.io.File. (File.java:130)
at net.alhazmy13.mediapicker.Video.VideoActivity$CompresVideoTask.doInBackground (VideoActivity.java:357)
at net.alhazmy13.mediapicker.Video.VideoActivity$CompresVideoTask.doInBackground (VideoActivity.java:329)
at android.os.AsyncTask$2.call (AsyncTask.java:295)
at java.util.concurrent.FutureTask.run (FutureTask.java:237)

Image Picker From Google Drive Issue

So I have been getting come crashes related to the URI being not found. I found this to happen when using the Image Picker and selecting a non image type file (ZIP, MP4). Whats odd is the onActivityResult returns a URI back but its not valid it contains a .jpg extension and returns the exception below when you try to open it into a input stream. Anyway to restrict google drive selection to photos only? Or is there a way to disable showing third party apps and just show the built in gallery app?

Thank You

Exception (I picked a .mp4 file from my google drive account):
java.io.FileNotFoundException: /storage/emulated/0/mediapicker/images/ad220b5b-f716-42ae-ac6b-002879870f0f.jpg: open failed: ENOENT (No such file or directory)

device-2017-12-21-112158

java.lang.OutOfMemoryErrorFatal Exception: java.lang.RuntimeException An error occurred while executing doInBackground()

Getting this crash ->

Fatal Exception: java.lang.RuntimeException: An error occurred while executing doInBackground()
       at android.os.AsyncTask$3.done(AsyncTask.java:318)
       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
       at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
       at java.util.concurrent.FutureTask.run(FutureTask.java:242)
       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:762)
Caused by java.lang.OutOfMemoryError: Failed to allocate a 63701004 byte allocation with 16777216 free bytes and 44MB until OOM
       at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java)
       at android.graphics.Bitmap.nativeCreate(Bitmap.java)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:977)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:948)
       at android.graphics.Bitmap.createBitmap(Bitmap.java:879)
       at net.alhazmy13.mediapicker.Utility.compressAndRotateIfNeeded(Utility.java:94)
       at net.alhazmy13.mediapicker.Image.ImageActivity$CompressImageTask.doInBackground(ImageActivity.java:388)
       at net.alhazmy13.mediapicker.Image.ImageActivity$CompressImageTask.doInBackground(ImageActivity.java:351)
       at android.os.AsyncTask$2.call(AsyncTask.java:304)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:762)

Location ->
Utility.java line 94
net.alhazmy13.mediapicker.Utility.compressAndRotateIfNeeded

Running this build ->
compile 'net.alhazmy13.MediaPicker:libary:2.4.0'

screen shot 2017-12-20 at 8 42 34 am

hi , readme error

if (requestCode == VideoPicker.VIDEO_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
List mPaths = (List) data.getSerializableExtra(ImagePicker.EXTRA_VIDEO_PATH);
//Your Code
}

need change ImagePicker.EXTRA_VIDEO_PATH replace VideoPicker.EXTRA_VIDEO_PATH

NullPointerException

                                                                       java.lang.RuntimeException: Unable to start activity ComponentInfo{*/net.alhazmy13.mediapicker.Image.ImageActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                                                                           at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:148)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                        Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference
                                                                           at java.io.File.fixSlashes(File.java:183)
                                                                           at java.io.File.<init>(File.java:130)
                                                                           at net.alhazmy13.mediapicker.Utility.createFolder(Utility.java:35)
                                                                           at net.alhazmy13.mediapicker.Image.ImageActivity.pickImage(ImageActivity.java:57)
                                                                           at net.alhazmy13.mediapicker.Image.ImageActivity.pickImageWrapper(ImageActivity.java:116)
                                                                           at net.alhazmy13.mediapicker.Image.ImageActivity.onCreate(ImageActivity.java:51)
                                                                           at android.app.Activity.performCreate(Activity.java:6251)
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                                                                           at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:148) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Demo

Can you add some image or GIF? it will be easy to see about the library

Add Image Selection Limit

I didn't try your library first because you don't have an image selection limit + it need to be multi-selection from the first time and i can freely select one or the limit i want.

it features looks good specially with the ability to compress

Crash on API 27

The library crashes on API 27 (Android 8.1) because of the launched activity requesting orientation with a translucent theme, which is not allowed now.

Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
    at android.app.Activity.onCreate(Activity.java:987)
    at android.support.v4.app.SupportActivity.onCreate(SupportActivity.java:66)
    at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:297)
    at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84)
    at net.alhazmy13.mediapicker.Video.VideoActivity.onCreate(VideoActivity.java:54)

Can't be able to Select Multipe Images

when i try to select images from gallery i only can select 1 image and you have written in description that select Multiple image but i can't. im using Nexus 5 and with Marshmallow.

App crashes when you select an image from Google Drive

Try to pick an image from Google Driver with following config:

new ImagePicker.Builder(MainActivity.this)
                        .mode(ImagePicker.Mode.CAMERA_AND_GALLERY)
                        .compressLevel(ImagePicker.ComperesLevel.MEDIUM)
                        .scale(200, 200)
                        .allowMultipleImages(true)
                        .enableDebuggingMode(true)
                        .build();

Application crashes with following Crash log:

E/SensorManager: app getDefaultSensor SENSOR TYPE =8
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
   Process: com.myicetag.myicetag, PID: 18698
   java.lang.RuntimeException: An error occurred while executing doInBackground()
	   at android.os.AsyncTask$3.done(AsyncTask.java:309)
	   at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
	   at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
	   at java.util.concurrent.FutureTask.run(FutureTask.java:242)
	   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
	   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
	   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
	   at java.lang.Thread.run(Thread.java:818)
	Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference
	   at java.io.File.fixSlashes(File.java:183)
	   at java.io.File.<init>(File.java:130)
	   at net.alhazmy13.mediapicker.Image.ImageActivity$CompressImageTask.doInBackground(ImageActivity.java:345)
	   at net.alhazmy13.mediapicker.Image.ImageActivity$CompressImageTask.doInBackground(ImageActivity.java:317)
	   at android.os.AsyncTask$2.call(AsyncTask.java:295)
	   at java.util.concurrent.FutureTask.run(FutureTask.java:237)
	   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
	   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
	   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
	   at java.lang.Thread.run(Thread.java:818) 

Only fullscreen opaque activities can request orientation Android 8

Caused by java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation at android.app.Activity.onCreate(Activity.java:1038) at android.support.v4.app.SupportActivity.onCreate(SupportActivity.java:66) at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:297) at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:84) at net.alhazmy13.mediapicker.Image.ImageActivity.onCreate(ImageActivity.java:56) at android.app.Activity.performCreate(Activity.java:7174) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030) at android.app.ActivityThread.-wrap11(Unknown Source) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6938) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

crop the image

after choosing the image,by the camera or from the gallery,
i should be able to #crop the image before press OK

Crash when return back from Gallery

When return back from Image Gallery without selecting any image, following crash happen:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.net.Uri android.content.Intent.getData()' on a null object reference

at net.alhazmy13.mediapicker.Image.ImageProcessing.processMultiImage(ImageProcessing.java:26)
at net.alhazmy13.mediapicker.Image.ImageActivity.onActivityResult(ImageActivity.java:204)

can't get video path on HongMi Note3(Android 6.0.1)

When I modify the code in FileProcessing#getVideoPath as
String path = "";
if (!TextUtils.isEmpty(uri.getAuthority())) {
Cursor cursor = activity.getContentResolver().query(uri, null, null, null, null);
if (cursor != null) {
int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
path = cursor.getString(index);
cursor.close();
}
}
}else {
path = uri.getPath();
}
return path;
It works.

[BUG] NullPointException

    private void video() {
        new VideoPicker.Builder(PublishActivity.this)
                .mode(VideoPicker.Mode.GALLERY)
                .directory(VideoPicker.Directory.DEFAULT)
                .extension(VideoPicker.Extension.MP4)
                .enableDebuggingMode(true)
                .build();
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == ImagePicker.IMAGE_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
            List<String> mPaths = (List<String>) data.getSerializableExtra(ImagePicker.EXTRA_IMAGE_PATH);
            File imageFile = new File(mPaths.get(0));
            if (imageFile.exists()) {
                mediaGridAdapter.incrementRefresh(new MediaModel(SCHEME + mPaths.get(0), MediaModel.MediaType.IMAGE, imageFile));
            }
        } else if (requestCode == VideoPicker.VIDEO_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
            List<String> mPaths = (List<String>) data.getSerializableExtra(VideoPicker.EXTRA_VIDEO_PATH);
            File videoFile = new File(mPaths.get(0));
            if (videoFile.exists()) {
                publishMediaList.add(new MediaModel(SCHEME + mPaths.get(0), MediaModel.MediaType.VIDEO, videoFile));
            }
        }
    }

I have to use the default folder properties 。
Image is OK, but video crash 。

Issue: NullPointerException `android.content.res.XmlResourceParser`

Report from @erhiiSolobaievUptech #64 (comment)
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:604) at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:578) at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:416) at net.alhazmy13.mediapicker.Image.ImageActivity.startActivityFromCamera(ImageActivity.java:168) at net.alhazmy13.mediapicker.Image.ImageActivity.access$400(ImageActivity.java:45) at net.alhazmy13.mediapicker.Image.ImageActivity$3.onClick(ImageActivity.java:111) at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

[BUG] NullPointException

FATAL EXCEPTION: AsyncTask #1
Process: com.jjjx, PID: 24263
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference
at java.io.File.fixSlashes(File.java:183)
at java.io.File.(File.java:130)
at net.alhazmy13.mediapicker.Video.VideoActivity$CompressImageTask.doInBackground(VideoActivity.java:343)
at net.alhazmy13.mediapicker.Video.VideoActivity$CompressImageTask.doInBackground(VideoActivity.java:315)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
at java.lang.Thread.run(Thread.java:818) 

Unable to handle Result Request in Fragments

Current Behavior
The result is delivered to the activity's onActivityResult since the return call is being made to the activity context. Result is not delivered to the fragment's onActivityResult.

Expected Behavior
Call from Fragment delivers the result to the fragment.

java.lang.NullPointerException:

java.lang.NullPointerException: Attempt to invoke interface method 'int android.database.Cursor.getColumnIndexOrThrow(java.lang.String)' on a null object reference

Only fullscreen opaque activities can request orientation

net.alhazmy13.mediapicker.Image.ImageActivity}: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Crash on Android 7.0

Duo to behavior change on Android 7.0, library start to produce following crash when trying to capture image from Camera:

"Fatal Exception: android.os.FileUriExposedException: file:///storage/emulated/0/mediapicker/images/afb88089-b317-4f37-99e7-9dcc131dd994.png exposed beyond app through ClipData.Item.getUri()"

In Android 7.0, "file://" is not allowed anymore to pass with Intent and should be replaced with "content://" while declaring a file provider in the manifest file.

OnActivityResult VideoPicker

please help me,
i got some error onActivityResult videopicker.

java.lang.NullPointerException: Attempt to invoke interface method 'int android.database.Cursor.getColumnIndexOrThrow(java.lang.String)' on a null object reference

for imagepicker, is going so good for me.
but, for videopicker, i got some error like this.
please help me, or fix this bug.

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.