miguelbcr / rxpaparazzo Goto Github PK
View Code? Open in Web Editor NEWRxJava extension for Android to take images using camera and gallery and pick files up
License: Apache License 2.0
RxJava extension for Android to take images using camera and gallery and pick files up
License: Apache License 2.0
On the RxJava 2 branch the FileProvider is being used. When adding a custom file_provider there is no clear documentation how to obtain the file_provider
Using this in the builder object is not working:
.setFileProviderAuthority((BuildConfig.APPLICATION_ID + ".file_provider")
Failed to find configured root that contains /data/data/com.globyworks.citykey.debug/files/RxPaparazzo/PHOTO-20170302_1048_30638.jpg
<paths> <files-path name="CityKeyImages" path="CityKey/" /> </paths>
When the user choose not crop option, currently the original image is deleted, so we need to fix it in order to prevent deleting the original image
The library uses Dagger 2 and annotation processing for DI. Our main app doesn't use either, rather going for a Dagger 1 and no apt approach. This causes conflicts when compiling because the Transform API detects two instances of Dagger.
While I value the cleanliness provided by DI it may be too opinionated to include it on a library. Given the small scope of the classes I would opt for manual constructor injection instead.
I'm trying to pick an image from gallery. I successfully launch gallery intent with this code but nothing happens after I select an image. None of "subscibe" callbacks get called.
public class PhotosFragment extends Fragment {
...
private void loadFromGallery() {
RxPaparazzo.takeImage(this)
.crop()
.usingGallery()
.subscribe(new Subscriber<Response<PhotosFragment, String>>() {
@Override
public void onCompleted() {
Log.d("PhotosFragmentD", "On photo pick completed");
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(Response<PhotosFragment, String> response) {
currentImagePath = response.data();
response.targetUI().displayCaptionDialog();
}
});
}
What's wrong with my code? How can I debug this issue?
Hi guys, I added this question in Stackoverflow. If you need more information, let me know.
I updated the last version, but I'm still having the same issue. I'll appreciate a lot your help. Thanks!
What can I do with it? Callback is called only when system asks for permissions. Other results are not reported.
Curious why the library is asking for the Camera permission, as this might put some people off.
Here is my code
RxPaparazzo.single(activity) .usingCamera() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response -> // Do smth })
And stcktrace
06-12 11:25:51.531 32762-32762/com.ezlo.tracker.debug E/AndroidRuntime: FATAL EXCEPTION: main Process: com.ezlo.tracker.debug, PID: 32762 io.reactivex.exceptions.OnErrorNotImplementedException: 1 exceptions occurred. at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704) at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701) at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:74) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252) at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109) 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) Caused by: io.reactivex.exceptions.CompositeException: 1 exceptions occurred. at io.reactivex.internal.operators.observable.ObservableOnErrorNext$OnErrorNextObserver.onError(ObservableOnErrorNext.java:94) at io.reactivex.internal.observers.BasicFuseableObserver.onError(BasicFuseableObserver.java:100) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.checkTerminate(ObservableFlatMap.java:495) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:331) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:323) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onError(ObservableFlatMap.java:288) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.checkTerminate(ObservableFlatMap.java:495) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:331) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:323) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onError(ObservableFlatMap.java:288) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:125) at io.reactivex.internal.operators.single.SingleToObservable$SingleToObservableObserver.onSuccess(SingleToObservable.java:59) at io.reactivex.internal.operators.single.SingleFlatMap$SingleFlatMapCallback$FlatMapSingleObserver.onSuccess(SingleFlatMap.java:111) at io.reactivex.internal.operators.single.SingleJust.subscribeActual(SingleJust.java:30) at io.reactivex.Single.subscribe(Single.java:2703) at io.reactivex.internal.operators.single.SingleFlatMap$SingleFlatMapCallback.onSuccess(SingleFlatMap.java:84) at io.reactivex.internal.operators.observable.ObservableToListSingle$ToListObserver.onComplete(ObservableToListSingle.java:113) at io.reactivex.observers.SerializedObserver.onComplete(SerializedObserver.java:181) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver.drain(ObservableConcatMap.java:205) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver.onComplete(ObservableConcatMap.java:148) at io.reactivex.internal.operators.observable.ObservableFlattenIterable$FlattenIterableObserver.onComplete(ObservableFlattenIterable.java:134) at io.reactivex.internal.operators.observable.ObservableBuffer$BufferExactObserver.onComplete(ObservableBuffer.java:134) 06-12 11:25:51.532 32762-32762/com.ezlo.tracker.debug E/AndroidRuntime: at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:367) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:323) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onComplete(ObservableFlatMap.java:300) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:367) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:323) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onComplete(ObservableFlatMap.java:300) at io.reactivex.internal.operators.observable.ObservableFromArray$FromArrayDisposable.run(ObservableFromArray.java:110) at io.reactivex.internal.operators.observable.ObservableFromArray.subscribeActual(ObservableFromArray.java:36) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableBuffer.subscribeActual(ObservableBuffer.java:44) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlattenIterable.subscribeActual(ObservableFlattenIterable.java:44) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableConcatMap.subscribeActual(ObservableConcatMap.java:52) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableToListSingle.subscribeActual(ObservableToListSingle.java:58) at io.reactivex.Single.subscribe(Single.java:2703) at io.reactivex.internal.operators.single.SingleFlatMap.subscribeActual(SingleFlatMap.java:36) at io.reactivex.Single.subscribe(Single.java:2703) at io.reactivex.internal.operators.single.SingleToObservable.subscribeActual(SingleToObservable.java:34) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableMap.subscribeActual(ObservableMap.java:33) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableOnErrorNext.subscribeActual(ObservableOnErrorNext.java:38) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96) at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272) 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:761) Caused by: io.reactivex.exceptions.CompositeException$CompositeExceptionCausalChain: Chain of Causes for CompositeException In Order Received => at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:364) 06-12 11:25:51.532 32762-32762/com.ezlo.tracker.debug E/AndroidRuntime: at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704) at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701) at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:74) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252) at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109) 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) Caused by: 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:583) at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:557) at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:399) at com.miguelbcr.ui.rx_paparazzo2.interactors.TakePhoto.getUri(TakePhoto.java:84) at com.miguelbcr.ui.rx_paparazzo2.interactors.TakePhoto.react(TakePhoto.java:53) at com.miguelbcr.ui.rx_paparazzo2.workers.Camera$3.apply(Camera.java:65) at com.miguelbcr.ui.rx_paparazzo2.workers.Camera$3.apply(Camera.java:63) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:121) at io.reactivex.internal.operators.single.SingleToObservable$SingleToObservableObserver.onSuccess(SingleToObservable.java:59) at io.reactivex.internal.operators.single.SingleFlatMap$SingleFlatMapCallback$FlatMapSingleObserver.onSuccess(SingleFlatMap.java:111) at io.reactivex.internal.operators.single.SingleJust.subscribeActual(SingleJust.java:30) at io.reactivex.Single.subscribe(Single.java:2703) at io.reactivex.internal.operators.single.SingleFlatMap$SingleFlatMapCallback.onSuccess(SingleFlatMap.java:84) at io.reactivex.internal.operators.observable.ObservableToListSingle$ToListObserver.onComplete(ObservableToListSingle.java:113) at io.reactivex.observers.SerializedObserver.onComplete(SerializedObserver.java:181) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver.drain(ObservableConcatMap.java:205) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver.onComplete(ObservableConcatMap.java:148) at io.reactivex.internal.operators.observable.ObservableFlattenIterable$FlattenIterableObserver.onComplete(ObservableFlattenIterable.java:134) at io.reactivex.internal.operators.observable.ObservableBuffer$BufferExactObserver.onComplete(ObservableBuffer.java:134) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:367) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:323) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onComplete(ObservableFlatMap.java:300) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:367) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:323) 06-12 11:25:51.532 32762-32762/com.ezlo.tracker.debug E/AndroidRuntime: at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onComplete(ObservableFlatMap.java:300) at io.reactivex.internal.operators.observable.ObservableFromArray$FromArrayDisposable.run(ObservableFromArray.java:110) at io.reactivex.internal.operators.observable.ObservableFromArray.subscribeActual(ObservableFromArray.java:36) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableBuffer.subscribeActual(ObservableBuffer.java:44) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlattenIterable.subscribeActual(ObservableFlattenIterable.java:44) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableConcatMap.subscribeActual(ObservableConcatMap.java:52) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableToListSingle.subscribeActual(ObservableToListSingle.java:58) at io.reactivex.Single.subscribe(Single.java:2703) at io.reactivex.internal.operators.single.SingleFlatMap.subscribeActual(SingleFlatMap.java:36) at io.reactivex.Single.subscribe(Single.java:2703) at io.reactivex.internal.operators.single.SingleToObservable.subscribeActual(SingleToObservable.java:34) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableFlatMap.subscribeActual(ObservableFlatMap.java:55) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableMap.subscribeActual(ObservableMap.java:33) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableOnErrorNext.subscribeActual(ObservableOnErrorNext.java:38) at io.reactivex.Observable.subscribe(Observable.java:10842) at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96) at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:452) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272) 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:761) 06-12 11:25:51.533 32762-32762/com.ezlo.tracker.debug D/Error: ERR: exClass=java.lang.NullPointerException 06-12 11:25:51.533 32762-32762/com.ezlo.tracker.debug D/Error: ERR: exMsg=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 06-12 11:25:51.533 32762-32762/com.ezlo.tracker.debug D/Error: ERR: file=FileProvider.java 06-12 11:25:51.533 32762-32762/com.ezlo.tracker.debug D/Error: ERR: class=android.support.v4.content.FileProvider 06-12 11:25:51.533 32762-32762/com.ezlo.tracker.debug D/Error: ERR: method=parsePathStrategy line=583 06-12 11:25:51.533 32762-32762/com.ezlo.tracker.debug D/Error: ERR: stack=io.reactivex.exceptions.OnErrorNotImplementedException: 1 exceptions occurred. at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704) at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701) at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:74) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252) at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109) 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) Caused by: io.reactivex.exceptions.CompositeException: 1 exceptions occurred. at io.reactivex.internal.operators.observable.ObservableOnErrorNext$OnErrorNextObserver.onError(ObservableOnErrorNext.java:94) at io.reactivex.internal.observers.BasicFuseableObserver.onError(BasicFuseableObserver.java:100) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.checkTerminate(ObservableFlatMap.java:495) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:331) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:323) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onError(ObservableFlatMap.java:288) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.checkTerminate(ObservableFlatMap.java:495) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:331) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(ObservableFlatMap.java:323) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onError(ObservableFlatMap.java:288) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:125) at io.reactivex.internal.operators.single.SingleToObservable$SingleToObservableObserver.onSuccess(SingleToObservable.java:59) at io.reactivex.internal.operators.single.SingleFlatMap$SingleFlatMapCallback$FlatMapSingleObserver.onSuccess(SingleFlatMap.java:111) at io.reactivex.internal.operators.single.SingleJust.subscribeActual(SingleJust.java:30) at io.reactivex.Single.subscribe(Single.java:2703) at io.reactivex.internal.operators.single.SingleFlatMap$SingleFlatMapCallback.onSuccess(SingleFlatMap.java:84) at io.reactivex.internal.operators.observable.ObservableToListSingle$ToListObserver.onComplete(ObservableToListSingle.java:113) at io.reactivex.observers.SerializedObserver.onComplete(SerializedObserver.java:181) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver.drain(ObservableConcatMap.java:205) at io.reactivex.internal.operators.observable.ObservableConcatMap$SourceObserver.onComplete(ObservableConcatMap.java:148) at io.reactivex.internal.operators.observable.ObservableFlattenIterable$FlattenIterableObserver.onComplete(ObservableFlattenIterable.java:134) at io.reactivex.internal.operators.observable.ObservableBuffer$BufferExactObserver.onComplete(ObservableBuffer.java:134) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drainLoop(ObservableFlatMap.java:367) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.drain(Obse
Hi
There are some features in UCrop lib that i need to use it on my project.
Features like:
UCrop.of(sourceUri, destinationUri)
.withAspectRatio(16, 9)
.withMaxResultSize(maxWidth, maxHeight)
.start(context);
Can we make more options like Size that we have and pass these parameters as well?
I have problem with java 8 in my android studio.
how can i use your lib in jdk 1.7 ?
sorry for the inconvenience ...
Is there plans to implement rxjava 2 support?
Hello!
Recently I've noticed such issue:
java.lang.NullPointerException at
com.miguelbcr.ui.rx_paparazzo.interactors.PickImage$2.response (PickImage.java:63)
rx_activity_result.HolderActivity.onActivityResult (HolderActivity.java:86)
Seems like sometimes image picker can return RESULT_OK, but not return actual data in intent.
I need to be able to change file name.
When I run Example code
RxPaparazzo.single(this)
.usingGallery()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Response<ChatActivity, FileData>>() {
@Override
public void accept(Response<ChatActivity, FileData> response) throws Exception {
// See response.resultCode() doc
/*if (response.resultCode() != RESULT_OK) {
response.targetUI().showUserCanceled();
return;
}
response.targetUI().loadImage(response.data());*/
}
});
then get this exception
looks like the RxAtivityResult2 has update something but here is outdated.
Hey, I'm trying to change the file provider name, and the docs say to use RxPaparazzo.Builder.setFileProviderAuthority(String authority)
, which has private access in the RxPaparazzo
class. How can I do this?
I want to change the path
and put my application name, but adding RxPaparazzo.Builder.setFileProviderPath(String path)
doesn't work as RxPaparazzo doesn't have Builder
and I'm using
compile "com.github.miguelbcr:RxPaparazzo:0.5.4-2.x"
Hi there,
great work on the library guys. I ran into an issue though where would like to access images from my photos.google.com linked to my android account. They appear in the documents intent but just not with this library.
As i understand this does not work because you add the flag Intent.CATEGORY_OPENABLE in PickImages.java
`
private Intent getFileChooserIntent() {
Intent intent = new Intent();
intent.setType("image/*");
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
intent.setAction(Intent.ACTION_GET_CONTENT);
} else {
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
}
return intent;
}
`
Is this limitation there for a reason? Could the feature be added to allow fetching documents from sources for instance http:// ?
Thanks
Tobias
I found RxPaparazzo2 is still use RxPermission with an old version to get RxPermission instance.
package com.miguelbcr.ui.rx_paparazzo2.interactors.GrantPermissions
RxPermissions.getInstance(targetUi.activity())
.requestEach(permissions)
.buffer(permissions.length)
...
.toObservable();
When picking an image from the gallery, some images throw an IOException when using the size option, e.g. RxPaparazzo.takeImage(activity).usingGallery().size(new CustomMaxSize(500));
java.lang.RuntimeException: java.io.IOException: Invalid marker
at rx.exceptions.Exceptions.propagate(Exceptions.java:58)
at com.fuck_boilerplate.rx_paparazzo.interactors.ImageUtils.copyExifRotation(ImageUtils.java:260)
...
Caused by: java.io.IOException: Invalid marker
at android.media.ExifInterface.saveJpegAttributes(ExifInterface.java:1961)
at android.media.ExifInterface.saveAttributes(ExifInterface.java:1604)
at com.fuck_boilerplate.rx_paparazzo.interactors.ImageUtils.copyExifRotation(ImageUtils.java:256)
Looks like they had the same problem in the uCrop library. Yalantis/uCrop#184
Hi team,
It seems that this settings was not supported in most devices, like this stackoverflow
Which apps would you recommend that honour this setting?
Thanks for this great library!
05-05 13:49:21.336 14924-14924/com.example.someapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.someapp, PID: 14924
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/widget/TintManager;
at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1185)
at android.support.design.widget.TabLayout.createTabView(TabLayout.java:656)
at android.support.design.widget.TabLayout.addTabView(TabLayout.java:695)
at android.support.design.widget.TabLayout.addTab(TabLayout.java:386)
at android.support.design.widget.TabLayout.addTab(TabLayout.java:361)
at android.support.design.widget.TabLayout.setTabsFromPagerAdapter(TabLayout.java:645)
at android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:616)
at com.example.someapp.ui.navigation.trade.TradeFragment.onViewCreated(TradeFragment.kt:201)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602)
at com.trello.navi.component.support.NaviAppCompatActivity.onStart(NaviAppCompatActivity.java:41)
at com.example.someapp.api.messaging.NetActivity.onStart(NetActivity.java:70)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
at android.app.Activity.performStart(Activity.java:6268)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
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.ClassNotFoundException: Didn't find class "android.support.v7.widget.TintManager" on path: DexPathList[[zip file "/data/app/com.example.someapp-2/base.apk"],nativeLibraryDirectories=[/data/app/com.example.someapp-2/lib/arm, /data/app/com.example.someapp-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.support.design.widget.TabLayout$TabView.<init>(TabLayout.java:1185)
at android.support.design.widget.TabLayout.createTabView(TabLayout.java:656)
at android.support.design.widget.TabLayout.addTabView(TabLayout.java:695)
at android.support.design.widget.TabLayout.addTab(TabLayout.java:386)
at android.support.design.widget.TabLayout.addTab(TabLayout.java:361)
at android.support.design.widget.TabLayout.setTabsFromPagerAdapter(TabLayout.java:645)
at android.support.design.widget.TabLayout.setupWithViewPager(TabLayout.java:616)
at com.example.someapp.ui.navigation.trade.TradeFragment.onViewCreated(TradeFragment.kt:201)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602)
at com.trello.navi.component.support.NaviAppCompatActivity.onStart(NaviAppCompatActivity.java:41)
at com.example.someapp.api.messaging.NetActivity.onStart(NetActivity.java:70)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
at android.app.Activity.performStart(Activity.java:6268)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
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)
Suppressed: java.lang.ClassNotFoundException: android.support.v7.widget.TintManager
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 29 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
Has anybody encountered that LeakCanary is complaining about memory leaks? This happens when rxPaparazzo is used on an Activity, when used on fragment I don't see any leaks. Below is what I am using the take either a picture or retrieve from gallery.
compositeSubscription.add(RxPaparazzo.takeImage(this)
.size(new CustomMaxSize(900))
.usingGallery()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(Timber::d)
.subscribe(response -> {
if (response.resultCode() != RESULT_OK) {
response.targetUI()
.showUserCanceled();
return;
}
response.targetUI()
.loadPicture(response.data());
}));
I got this error message when i was trying to pick an image from gallery.
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/fuck_boilerplate/rx_paparazzo/entities/Size;
Please HELP
Thanks!
My code :
Size size = Size.Small;
RxPaparazzo.takeImages(fragment)
.crop()
.size(size)
.usingGallery()
.subscribe(
new Action1<com.fuck_boilerplate.rx_paparazzo.entities.Response<GenericFragment, List<String>>>() {
@Override
public void call(
com.fuck_boilerplate.rx_paparazzo.entities.Response<GenericFragment, List<String>> response) {
if (response.resultCode() != Activity.RESULT_OK) {
response.targetUI().imagePickFail();
return;
}
for (int i = 0; i < response.data().size(); i++) {
File imageFile = new File(response.data().get(i));
Picasso.with(fragment.getActivity()).setLoggingEnabled(true);
Picasso.with(fragment.getActivity())
.invalidate(new File(response.data().get(i)));
Picasso.with(fragment.getActivity()).load(imageFile).into(imageView);
}
}
}
);
It would be great if you add different resultCode when user denied permission with checked "Do not ask again" or not. I know that it issue most suitable for RxPaparazzo, but may be you can add this feature locally.
Hi!
Seems like sometimes we can miss reference to target activity or fragment (i think when we are trying to pass result to detached fragment, for example)
Caused by java.lang.NullPointerException
android.provider.DocumentsContract.isDocumentsProvider (DocumentsContract.java:750)
android.provider.DocumentsContract.isDocumentUri (DocumentsContract.java:733)
com.miguelbcr.ui.rx_paparazzo.interactors.GetPath.getPath (GetPath.java:59)
com.miguelbcr.ui.rx_paparazzo.interactors.GetPath.react (GetPath.java:47)
com.miguelbcr.ui.rx_paparazzo.interactors.PickImage$2.response (PickImage.java:62)
rx_activity_result.HolderActivity.onActivityResult (HolderActivity.java:86)
I get following exception:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'rx_activity_result.OnResult rx_activity_result.Request.onResult()' on a null object reference
at rx_activity_result.HolderActivity.onCreate(HolderActivity.java:33)
at android.app.Activity.performCreate(Activity.java:6374)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2743)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2855)
at android.app.ActivityThread.access$900(ActivityThread.java:181)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6117)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
This is how I use it:
@Override
public boolean onMenuItemClick(MenuItem item)
{
switch (item.getItemId())
{
case R.id.action_camera:
{
// does take care of camera permission!!!
RxPaparazzo.takeImage(getActivity())
.usingCamera()
.subscribe(response -> {
if (response.resultCode() != Activity.RESULT_OK)
return;
onImageTaken(response.targetUI(), response.data());
});
break;
}
}
Any idea why this happens? In my Application I do call RxPaparazzo.register(this);
...
Some sideeffect is, that the image is not even saved...
Setup instructions seem broken to me. Gradle fails to resolve the library
I'm using Android device 5.0, It always opens the explorer to pick image instead of gallery, and I can't pick multiple images. It's very strange
RxPaparazzo.takeImages(PhotosPickerFragment.this)
.usingGallery()...
I've just tested RxPaparazzo on Samsung Galaxy Note 2 and found an issue on activity orientation change. When device starts camera in horizontal orientation my activity also turns and destroys. When callback returns it leads to the destroyed activity. I decided to keep my activity alive on orientation change and used dirty hack android:configChanges="keyboardHidden|orientation|screenSize" because I don't have different resources for different orientation of screen.
@VictorAlbertos @miguelbcr do you think this bug related with samsung specific devices or all devices which has horizontal camera?
Options options = new Options();
options.setToolbarColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
options.setAspectRatio(500, 500);
RxPaparazzo.register(this);
Firstly, thanks for perfect library. But, i have a problem with using onActivityResult. I know you dont like this but, my project gives some error with your solution. So how can i get path of image when photo cropped? Thank you
`public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_GALLERY && resultCode == Activity.RESULT_OK&& null != data) {
return;
}
}`
i want to both of camera and gallery code for my project. Thanks
By the way i'm using for choose photo and crop, with this code:
size = Size.Original; RxPaparazzo.takeImage(this) .size(size) .crop(options) .usingCamera() .subscribe();
is this true?
While running on 7.0+ and targeting API level 24
Unable to start activity ComponentInfo{com.example.app/rx_activity_result.HolderActivity}: android.os.FileUriExposedException:file:///storage/emulated/0/Android/data/com.example.app/cache/shoot.jpg exposed beyond app through ClipData.Item.getUri()
https://developer.android.com/reference/android/os/FileUriExposedException.html
1.I want to choose pick a image from gallery and display it without cropping and that is why I'm passing null for options pickSingle(null, OriginalSize())
but I see it saves the copy of existing file as I try to pick a new one I see the copied version of my original photo , I mean if I want to display existing photo I don't want to have the copied version.
2 When I'm want to change the photo as a result of picking a photo (it opens the Recent folder) navigating to Photos and to the RxPaparazzo folder it displays the count 5 photos (the copied versions as well ),but when I navigate inside the folder only the original ones,not copied photos
I am using proguard in my project. What kind of proguard rules should I add in my proguard file to avoid all the warnings and crashes? Can you include description in library readme file?
Currently I am getting such crash when using RxPaparazzo with proguard:
Crashed: main: 0 0 0x0000000000000000
at rx.internal.util.unsafe.UnsafeAccess.addressOf(UnsafeAccess.java:109)
at rx.internal.util.unsafe.MpmcArrayQueueProducerField.(MpmcArrayQueue.java:31)
at rx.internal.util.ObjectPool.initialize(ObjectPool.java:153)
at rx.internal.util.ObjectPool.(ObjectPool.java:57)
at rx.internal.util.ObjectPool.(ObjectPool.java:36)
at rx.internal.util.RxRingBuffer$1.(RxRingBuffer.java:280)
at rx.internal.util.RxRingBuffer.(RxRingBuffer.java:280)
If you include facebook sdk in project on android API 19 you get the following stacktrace while trying to perform register(this):
0-12 17:20:34.161 16729-16729/com.zeroger.application E/dalvikvm: Could not find class 'rx_activity_result.RxActivityResult$Builder', referenced from method rx_activity_result.RxActivityResult.on 10-12 17:20:34.171 16729-16729/com.zeroger.application E/dalvikvm: Could not find class 'rx_activity_result.RxActivityResult$Builder', referenced from method rx_activity_result.RxActivityResult.on 10-12 17:20:34.171 16729-16729/com.zeroger.application E/dalvikvm: Could not find class 'rx_activity_result.ActivitiesLifecycleCallbacks', referenced from method rx_activity_result.RxActivityResult.register 10-12 17:20:34.171 16729-16729/com.zeroger.application E/AndroidRuntime: FATAL EXCEPTION: main Process: com.zeroger.application, PID: 16729 java.lang.NoClassDefFoundError: rx_activity_result.ActivitiesLifecycleCallbacks at rx_activity_result.RxActivityResult.register(RxActivityResult.java:37) at com.fuck_boilerplate.rx_paparazzo.RxPaparazzo.register(RxPaparazzo.java:39) at com.zerogerc.application.model.ExperimentsApplication.onCreate(ExperimentsApplication.java:21)....
This is occured not only on RxPaparzzo. RxActivityResult have the same issue.
Could you propose possible fix?
Hi guys,
I would like to know why paparazzo is creating new images when I select images from the gallery. Check the last question to find the stackoverflow's link to see the update. I uploaded a video that shows the duplication.
Thank for fixing the other issue so fast.
Duplicated images are saved on your folder on external storage
It will be very fine if you add possibility to resize image to any custom size. Now, you have such possibility. The most suitable size now is Screen, but if we use app on tablets and phones this size type is not exactly what users of this library want. I create pull request for this feature.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.withdirect.mobile/rx_activity_result.HolderActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at rx_activity_result.HolderActivity.onCreate(HolderActivity.java:33)
at android.app.Activity.performCreate(Activity.java:5248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Hope to hear from you sooon! :)
It seems, like after every picking image from gallery, RzPaparazzo creates new of that image. Should I remove it always or not?
Hey Miguel, quick question over here: Is it truly needed to provide an activity or a fragment to RxPaparazzo? Shouldn't it suffice to provide an application context or a context itself? I understand you use the activity/fragment in the subscription, but as an example, If someone tries to use RxPaparazzo on a presenter (MVP), then the presenter would need to be aware of the Activity, thus breaking the whole MVP concept (Activity and Presenter should only communicate through the View the Activity implements, thus not be aware of each other). I guess a context overload should be available for this purposes where the developer doesn't care about the TargetUI at all because it already has a view (MVP).
Thanks for the awesome library an effort you put on it.
Is it possible to split the library into two parts, one with crop support (and the corresponding dependency to uCrop) and one without?
So that we end up with a usage like following:
compile "com.github.FuckBoilerplate:RxPaparazzo:0.1.0"
compile "com.github.FuckBoilerplate:RxPaparazzo-crop:0.1.0"
so that someone who does not want to include uCrop can still use your library?
App crash after pick images from Google Drive (or any remote storage) without cropping
Logs:
java.lang.RuntimeException: Unable to destroy activity {com.fuck_boilerplate.rx_paparazzo.sample/rx_activity_result.HolderActivity}: rx.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3831) at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3849) at android.app.ActivityThread.-wrap5(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398) 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: rx.exceptions.OnErrorNotImplementedException: Attempt to invoke virtual method 'char[] java.lang.String.toCharArray()' on a null object reference at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:374) at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:371) at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44) at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:157) at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:120) at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:204) at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onError(OperatorOnErrorResumeNextViaFunction.java:143) at rx.internal.operators.OperatorMap$MapSubscriber.onError(OperatorMap.java:85) at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266) at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:810) at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:571) at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:560) at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:844) at rx.observers.Subscribers$5.onError(Subscribers.java:224) at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:192) at rx.internal.operators.OperatorZip$Zip.tick(OperatorZip.java:269) at rx.internal.operators.OperatorZip$Zip$InnerSubscriber.onNext(OperatorZip.java:335) at rx.internal.operators.OperatorMap$MapSubscriber.onNext(OperatorMap.java:74) at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:268) at rx.Subscriber.setProducer(Subscriber.java:211) at rx.internal.operators.OperatorMap$MapSubscriber.setProducer(OperatorMap.java:99) at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:79) at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:75) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.Observable.unsafeSubscribe(Observable.java:8460) at rx.internal.operators.OperatorZip$Zip.start(OperatorZip.java:214) at rx.internal.operators.OperatorZip$ZipSubscriber.onNext(OperatorZip.java:156) at rx.internal.operators.OperatorZip$ZipSubscriber.onNext(OperatorZip.java:122) at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:268) at rx.Subscriber.setProducer(Subscriber.java:209) at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:79) at rx.internal.util.ScalarSynchronousObservable$1.call(ScalarSynchronousObservable.java:75) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.Observable.unsafe
RxPaparazzo version 0.4.3
Fatal Exception: java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:57)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by rx.exceptions.OnErrorNotImplementedException: Failed opening content provider: content://media/external/images/media/1367
at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:386)
at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:383)
at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44)
at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:153)
at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:115)
at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onError(OnSubscribeDoOnEach.java:87)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.onError(OnSubscribeMap.java:88)
at rx.internal.operators.OperatorSubscribeOn$1$1.onError(OperatorSubscribeOn.java:59)
at rx.internal.operators.OperatorSubscribeOn$1$1.onError(OperatorSubscribeOn.java:59)
at com.miguelbcr.ui.rx_paparazzo.interactors.DownloadImage$1.call(DownloadImage.java:61)
at com.miguelbcr.ui.rx_paparazzo.interactors.DownloadImage$1.call(DownloadImage.java:50)
at rx.Observable.unsafeSubscribe(Observable.java:10140)
at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:228)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by java.io.FileNotFoundException: Failed opening content provider: content://media/external/images/media/1367
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1102)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:904)
at android.content.ContentResolver.openInputStream(ContentResolver.java:629)
at com.miguelbcr.ui.rx_paparazzo.interactors.DownloadImage.getContent(DownloadImage.java:80)
at com.miguelbcr.ui.rx_paparazzo.interactors.DownloadImage.access$100(DownloadImage.java:30)
at com.miguelbcr.ui.rx_paparazzo.interactors.DownloadImage$1.call(DownloadImage.java:54)
at com.miguelbcr.ui.rx_paparazzo.interactors.DownloadImage$1.call(DownloadImage.java:50)
at rx.Observable.unsafeSubscribe(Observable.java:10140)
at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:228)
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Is there any way to make this library working with camera and gallery at the same time? So the user can choose whether to use camera or gallery, without having me to create the condition if the user want to use camera, or want to use gallery.
Thanks, your library really helps me.
I am using library for selecting user profile image and crop. It's work pretty well for me. But I do not want to take external storage permission from user for saving selected/cropped image.
I just need to save image on temporary basis so if I can save temporary image in internal storage then it would be best for me. As doing this way I can avoid external Storage permission.
Query: Can we have provision in library so that we can save image in internal storage instead or external.
Waiting for your earliest reply.
there is any way to get TargetUI reference on case of Error? Or, there is any way to create own Exceptions?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.