jimmod / sharetocomputer Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v3.0
License: GNU General Public License v3.0
Share to Computer is an Android application that makes sharing files from mobile phones to computer easier. You just need to select the files you want to send and share to computer. This will generate a link to be inputted on the computer browser where you can download the file shared.
My Suggestion is on the
ShareToComputer is a decent application that reduces the stress most users go through just to send a piece of file to their computer. I believe the application can still be improved.
Categories- Trying to send files on ShareToComputer is kind of stressful if the files are not recent or together. That is why I propose that the files should be categorized. The categories will include Music, Videos, Photo Gallery, Files. Each of these categories will contain similar files. For example, the music category will include all music files. This is the same with the Video and photo gallery. The Files category will include files that can not be categorized.
Share History- Users can only send files but can’t see what they have sent in the future. I propose the addition of a Share history feature that will display all sent files and the date sent.
The above is how I want the categories feature to be enhanced. You can see that the music button has only music files in there. That will be the same for other categories.
This image is how I want the Share history to be implemented. You can see that the files sent can be seen and the date sent plus the device sent to.
Categories- This is an important feature that will reduce the time spent in finding the file to send. Imagine someone that want to send multiple video files in different locations, with the current mode of the application that is impossible. The user have to be selecting the video in each of the categories and sent. With the categories feature, the user can see all the videos on the device and choose anyone to send. It saves time and stress used to search and share videos one after the other.
Share History- This is another important feature that will let users see their past files sent. It helps to avoid situation of double sending. I often like transferring some of my pictures to my computer to increase available storage space. The presence of a history feature will make me avoid situations where I send a file twice. I can easily check the history and see the files I have sent. You can also see the device name you sent the files to.
The application is one useful one because it cuts out the use of external devices such as cables, flash drives to send things between your phone and computer. Implementing my suggestions will make it more desirable for the general public. It will reduce the time and also cut out stress associated with finding the files to send.
When I click on the settings page and checked the about tab, I clicked back to use the share file feature. After I clicked the share file and I clicked on a file to share, the app crashed. So I tried the same thing many times and it happened every time.
Launch the app.
Click on the menu icon,
*Click any option in the menu
Go back to share file
Select any file and see the error
I don't expect an action like that to cause the app to crash.
Device [Gionee X1]
Version [7.0]
App version [1.1.1]
2019-06-23 23:28:37.820 I/com.jim.sharetocomputer.Application[38]: *QR Code version: 2
2019-06-23 23:28:37.843 I/com.jim.sharetocomputer.logging.KoinLogger[28]: [init] declare Android Context
2019-06-23 23:28:37.854 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.content.Context' ~ [type:Single,primary_type:'android.content.Context']
2019-06-23 23:28:37.855 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.app.Application' ~ [type:Single,primary_type:'android.app.Application']
2019-06-23 23:28:37.862 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind qualifier:'PORT' ~ [type:Single,name:'PORT', primary_type:'java.lang.Integer']
2019-06-23 23:28:37.864 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerText' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerText']
2019-06-23 23:28:37.865 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerSingleFile' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerSingleFile']
2019-06-23 23:28:37.866 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles']
2019-06-23 23:28:37.868 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.MainViewModel' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.MainViewModel']
2019-06-23 23:28:37.870 I/com.jim.sharetocomputer.logging.KoinLogger[28]: total 7 registered definitions
2019-06-23 23:28:37.871 I/com.jim.sharetocomputer.logging.KoinLogger[28]: load modules in 8.81477 ms
2019-06-23 23:28:37.922 I/com.jim.sharetocomputer.MainActivity[46]: onCreate
2019-06-23 23:28:38.115 W/com.jim.sharetocomputer.MainActivity[92]: Unknown action: android.intent.action.MAIN|null
2019-06-23 23:28:38.155 I/com.jim.sharetocomputer.MainFragment[46]: onCreate
2019-06-23 23:28:38.207 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 192.168.43.225
2019-06-23 23:28:38.330 I/com.jim.sharetocomputer.MainViewModel[81]: no request
2019-06-23 23:28:38.336 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 192.168.43.225
2019-06-23 23:28:44.861 I/com.jim.sharetocomputer.MainFragment[73]: onDestroy
2019-06-23 23:28:48.216 I/com.jim.sharetocomputer.MainFragment[46]: onCreate
2019-06-23 23:28:48.231 I/com.jim.sharetocomputer.MainViewModel[81]: no request
2019-06-23 23:28:48.236 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 192.168.43.225
2019-06-23 23:28:50.754 I/com.jim.sharetocomputer.MainViewModel[28]: Select File
2019-06-23 23:28:52.896 I/com.jim.sharetocomputer.ext.FragmentHelper[75]: onActivityResult 0|-1|null
2019-06-23 23:28:52.898 I/com.jim.sharetocomputer.MainViewModel[54]: *Result: -1|null
2019-06-23 23:28:52.902 I/com.jim.sharetocomputer.MainViewModel[95]: Starting web service
2019-06-23 23:28:52.951 I/com.jim.sharetocomputer.WebServerService[48]: onStartCommand
2019-06-23 23:28:52.957 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 192.168.43.225
2019-06-23 23:28:52.973 I/com.jim.sharetocomputer.webserver.WebServer[39]: Starting WebServer
2019-06-23 23:28:53.001 E/com.jim.sharetocomputer.logging.MyUncaughtExceptionHandler[5]: uncaughtException
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@6d57891
at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1271)
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:257)
at android.graphics.Canvas.drawBitmap(Canvas.java:1415)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
at android.view.View.getDrawableRenderNode(View.java:17654)
at android.view.View.drawBackground(View.java:17578)
at android.view.View.draw(View.java:17347)
at android.view.View.updateDisplayListIfDirty(View.java:16302)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.updateDisplayListIfDirty(View.java:16294)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.updateDisplayListIfDirty(View.java:16294)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.updateDisplayListIfDirty(View.java:16294)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.updateDisplayListIfDirty(View.java:16294)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1426)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.draw(View.java:17375)
at android.view.View.updateDisplayListIfDirty(View.java:16302)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.updateDisplayListIfDirty(View.java:16294)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.updateDisplayListIfDirty(View.java:16294)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.updateDisplayListIfDirty(View.java:16294)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at android.view.View.updateDisplayListIfDirty(View.java:16294)
at android.view.View.draw(View.java:17113)
at android.view.ViewGroup.drawChild(ViewGroup.java:3893)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3679)
at com.android.internal.policy.DecorView.dispatchDraw(DecorView.java:792)
at android.view.View.draw(View.java:17375)
at com.android.internal.policy.DecorView.draw(DecorView.java:778)
at android.view.View.updateDisplayListIfDirty(View.java:16302)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:661)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:667)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:775)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:3209)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3002)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2590)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1479)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7019)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:907)
at android.view.Choreographer.doCallbacks(Choreographer.java:709)
at android.view.Choreographer.doFrame(Choreographer.java:644)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:893)
at android.os.Handler.handleCallback(Handler.java:836)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6269)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)```
Supposedly, when I want to share contact files, that capability must be able to be done.
The application suddenly stopped when I shared files contacts, so the ability to share contact files couldn't be done. Even though I have tried doing it repeatedly, the same problem still occurs.
Install and open the application.
Select and open the "Share files" feature, then select the contact you want to share.
Then you will find problems like I have experienced.
Currently it is not possible to share files/images over tethering (device with STC creates WLAN hotspot), it just asks for a WLAN connection.
Possible situation would be that there's no access to an AP which allows connections to other devices.
I expected the application to send my chosen file to my computer when input the URL given to my browser.
When I tried sending my file from the file manager using the share to computer application, then the application shows a URL requesting me to input it to my computer browser, I input it but it was coming up with information that site cannot be reached.
Here is every possible detail to reproduce the bug.
This site can’t be reached
The webpage at http://0.0.0.0:8080/ might be temporarily down or it may have moved permanently to a new web address.
proposal
My suggestion is to add shear in group and language option to this app.
Mockups/Examples
After adding shear in group option to this app.
After adding language option to this app
Shearit app has both these options.
Benefits of adding these two options
1.The benefit of shear in group option is that when we need to shear any file to many people we have to send the file to people one by one of we have shear in group option we can make the group of all these people and send the file in the group. This option leads to reduce the wastage of time and quick shear to many people.
2. The benefit of adding language option is that Now by implementing Language feature, user can use the app in many languages. As we all know that there are many languages in this globe and many user are not comfortable with english language. So this feature can help user to feel comfort with his mother language.
While it repeated several times, I simply launched SuperBeam and that app transferred properly.
Android 7.0 on LG Fiesta 2 cellphone from Tracfone.
Kernel version 3.18.31,
Build number NRD90U,
Software version L164V10a.
How to produce failure
Launched STC,
I tapped 'Share Image/Video',
Chose to complete action using Gallery
I selected the proper 'album',
I selected 99 files (select all),
Clicked ok.
STC window now shows the QR code and URL
Went to my PC,
I opened a browser (Chromium Version 75.0.3770.90 (Official Build) Built on Ubuntu , running on Ubuntu 18.04 (64-bit), Browser and PC is on same network;
I went to the address shown by STC;
Clicked to download all files as zip.
STC transfer fails, and Chromium deletes the unconfirmed download.
When I returned to looking at the cellphone, STC is no longer showing the URL/QR code window, it is back at the file type selection screen.
This repeated 2 more times, and then I gave up using STC for the transfer.
Total file size for a Superbeam transfer which was successful is 649 megs
The URL from Superbeam is identical to the STC URL.
This will allow browser and download tools show a loading bar, tell me the process and keep me patient.
More importantly, without content length,it would just wait for the additional bit that would never come.
when sharing a file to the computer that has unicode character
it may have wrong filename.
just look at the screenshot.
maybe you don't understand chinese, but just take a look at the filename.
The filename of files are ok,but the name displayed is not ok.
maybe the html template needs sth like
Hi there, thanks for your effort on this simple yet horrific app. However I can confirm that if 8080/tcp is already binded by another application the app will exit (crash?) without giving a hint.
Run an app that binds to 0.0.0.0:8080 (e.g. privoxy or Drony). Then attempts to share something through ShareToComputer.
My suggestion is to provide the user an interface to assign what port to bind to. Or try port 8081, 8082... until it reaches an available port.
The "Share image / video" feature cannot be used in landscape view mode. And this application suddenly stopped when I clicked or used the feature in landscape view mode.
After switching to landscape display mode, then I clicked on the "Share image / video" feature. This application still works well, so the ability to share pictures or videos can be done.
Install and open the application.
Switch to "landscape" display mode.
Click on the "Share image/video" feature.
Then you will find problems like I have experienced.
Any chance of native https support maybe via Let's encrypt or something? Can I install my own cert and send over https? I wouldnt trust sending information even on a home network over an unsecured connection.
Great app. Thank you
Can we just share link or text?
Often I share small quick things to my tv browser. This would be a great way to share links quickly.
When I clicked on the 'select' file and then clicked on the phone back button 'to cancel' the app crashed
Launch the app.
Click on Select File,
Then click the phone back button to cancel
And see the error
I expected that the app should function normally and canceled with the back button.
Device: [Gionee, X1]
Version [7.0]
App version [1.0.1]
Process: com.jim.sharetocomputer, PID: 22689
java.lang.IllegalStateException: result.resultData must not be null
at b.c.a.k.b(:12)
at d.b.b.a.a.a()
at e.a.O.run(:2)
at e.a.c.b.a()
at e.a.c.b.a()
at e.a.c.b$a.run(:13)```
Very good app, can you achieve two-way sharing, computer sharing to mobile phone
Hi,
have you considered using magic-wormhole as backend? It would be so awesome to have a great Android client utilizing this wonderful utility!
Reported via email
Showing "Wi-Fi connection required"
Able to share file / image
2019-07-13 21:11:28.588 I/com.jim.sharetocomputer.Application[37]: Application is starting
2019-07-13 21:11:28.591 I/com.jim.sharetocomputer.Application[38]: *QR Code version: 2
2019-07-13 21:11:28.609 I/com.jim.sharetocomputer.logging.KoinLogger[28]: [init] declare Android Context
2019-07-13 21:11:28.618 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.content.Context' ~ [type:Single,primary_type:'android.content.Context']
2019-07-13 21:11:28.619 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.app.Application' ~ [type:Single,primary_type:'android.app.Application']
2019-07-13 21:11:28.624 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind qualifier:'PORT' ~ [type:Single,name:'PORT', primary_type:'java.lang.Integer']
2019-07-13 21:11:28.625 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerText' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerText']
2019-07-13 21:11:28.626 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerSingleFile' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerSingleFile']
2019-07-13 21:11:28.627 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles']
2019-07-13 21:11:28.627 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.MainViewModel' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.MainViewModel']
2019-07-13 21:11:28.629 I/com.jim.sharetocomputer.logging.KoinLogger[28]: total 7 registered definitions
2019-07-13 21:11:28.630 I/com.jim.sharetocomputer.logging.KoinLogger[28]: load modules in 4.997031 ms
2019-07-13 21:11:28.675 I/com.jim.sharetocomputer.MainActivity[46]: onCreate
2019-07-13 21:11:28.865 W/com.jim.sharetocomputer.MainActivity[92]: Unknown action: android.intent.action.MAIN|null
2019-07-13 21:11:28.901 I/com.jim.sharetocomputer.MainFragment[37]: onCreate
2019-07-13 21:11:28.936 I/com.jim.sharetocomputer.MainViewModel[121]: no request
2019-07-13 21:11:37.226 I/com.jim.sharetocomputer.QrCodeFragment[43]: onCreate
2019-07-13 21:11:37.272 I/com.jim.sharetocomputer.MainFragment[48]: onDestroy
2019-07-13 21:11:44.647 I/com.jim.sharetocomputer.ext.FragmentHelper[75]: onActivityResult 49374|0|null
2019-07-13 21:11:44.721 I/com.jim.sharetocomputer.MainFragment[37]: onCreate
2019-07-13 21:11:44.744 I/com.jim.sharetocomputer.MainViewModel[121]: no request
2019-07-13 21:11:44.751 I/com.jim.sharetocomputer.QrCodeFragment[58]: onDestroy
2019-07-13 21:11:46.382 I/com.jim.sharetocomputer.MainViewModel[40]: Select File
2019-07-13 21:11:50.449 I/com.jim.sharetocomputer.MainViewModel[40]: Select File
2019-07-13 21:11:51.499 I/com.jim.sharetocomputer.MainViewModel[56]: Select Media
2019-07-13 21:11:54.159 I/com.jim.sharetocomputer.SettingFragment[26]: onCreate
2019-07-13 21:11:54.174 I/com.jim.sharetocomputer.MainFragment[48]: onDestroy
2019-07-13 21:11:59.593 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 172.29.189.12
When I use the QR code scanner to scan on my second device, the app crashed after it scanning.
Launch the app.
Click on the menu icon,
Then click the scan QR code to scan another phone
And see the error
I expect that the scan feature to work successfully without any fatal error.
Device [itel]
Version [6.1]
App version [1.1.1]
06-20 23:24:31.636 19492 20271 E AndroidRuntime: Process: com.jim.sharetocomputer, PID: 19492
06-20 23:24:31.636 19492 20271 E AndroidRuntime: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 8080): connect failed: ECONNREFUSED (Connection refused)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at libcore.io.IoBridge.connect(IoBridge.java:124)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at java.net.Socket.connect(Socket.java:884)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.Connection.connect(Connection.java:152)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at java.net.URL.openStream(URL.java:470)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.jim.sharetocomputer.DownloadService.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.jim.sharetocomputer.DownloadService.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at c.c.a.d.a(:5)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at e.g.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at e.g.a(:84)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at com.jim.sharetocomputer.DownloadService.a(:15)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at c.c.a.e.b(:2)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at e.b.b.a.a.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at f.a.O.run(:2)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at f.a.c.b.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at f.a.c.b.a()
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at f.a.c.b$a.run(:13)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at libcore.io.Posix.connect(Native Method)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
06-20 23:24:31.636 19492 20271 E AndroidRuntime: at libcore.io.IoBridge.connect(IoBridge.java:122)```
I used the share file and I picked an image to share. After the link has been generated, I click the menu and access the about page. When I used the back arrow button to go back, the app crashed.
Launch the app
Click on share file
Select any file
Click on menu icon and click on about function
Then click back function on the app or phone back button and see the error
I expect the app to take me back to the previous page, so that I may continue the process.
Device [Gionee X1]
Version [7.0]
App version [1.1.1]
2019-06-24 09:45:40.808 I/com.jim.sharetocomputer.Application[38]: *QR Code version: 2
2019-06-24 09:45:40.836 I/com.jim.sharetocomputer.logging.KoinLogger[28]: [init] declare Android Context
2019-06-24 09:45:40.847 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.content.Context' ~ [type:Single,primary_type:'android.content.Context']
2019-06-24 09:45:40.848 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'android.app.Application' ~ [type:Single,primary_type:'android.app.Application']
2019-06-24 09:45:40.853 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind qualifier:'PORT' ~ [type:Single,name:'PORT', primary_type:'java.lang.Integer']
2019-06-24 09:45:40.854 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerText' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerText']
2019-06-24 09:45:40.855 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerSingleFile' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerSingleFile']
2019-06-24 09:45:40.856 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.webserver.WebServerMultipleFiles']
2019-06-24 09:45:40.857 I/com.jim.sharetocomputer.logging.KoinLogger[28]: bind type:'com.jim.sharetocomputer.MainViewModel' ~ [type:Factory,primary_type:'com.jim.sharetocomputer.MainViewModel']
2019-06-24 09:45:40.867 I/com.jim.sharetocomputer.logging.KoinLogger[28]: total 7 registered definitions
2019-06-24 09:45:40.868 I/com.jim.sharetocomputer.logging.KoinLogger[28]: load modules in 5.310058 ms
2019-06-24 09:45:40.891 I/com.jim.sharetocomputer.WebServerService[48]: onStartCommand
2019-06-24 09:45:40.913 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 0.0.0.0
2019-06-24 09:45:40.954 I/com.jim.sharetocomputer.WebServerService[111]: onDestroy
2019-06-24 09:46:13.370 I/com.jim.sharetocomputer.MainActivity[46]: onCreate
2019-06-24 09:46:13.627 W/com.jim.sharetocomputer.MainActivity[92]: Unknown action: android.intent.action.MAIN|null
2019-06-24 09:46:13.656 I/com.jim.sharetocomputer.MainFragment[46]: onCreate
2019-06-24 09:46:13.720 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 0.0.0.0
2019-06-24 09:46:13.953 I/com.jim.sharetocomputer.MainViewModel[81]: no request
2019-06-24 09:46:13.959 I/com.jim.sharetocomputer.ext.ContextExtKt[51]: IP address: 0.0.0.0
2019-06-24 09:46:16.661 I/com.jim.sharetocomputer.QrCodeFragment[43]: onCreate
2019-06-24 09:46:16.789 I/com.jim.sharetocomputer.MainFragment[73]: onDestroy
2019-06-24 09:46:25.607 I/com.jim.sharetocomputer.ext.FragmentHelper[75]: onActivityResult 49374|-1|android.util.MapCollections$KeySet@b471c403
2019-06-24 09:46:25.762 I/com.jim.sharetocomputer.QrCodeFragment[70]: Start download service to download from: QrCodeInfo(version=2, url=http://0.0.0.0:8080)
2019-06-24 09:46:25.775 I/com.jim.sharetocomputer.DownloadService[60]: onStartCommand
2019-06-24 09:46:25.902 E/com.jim.sharetocomputer.DownloadService[157]: Error on downloading and parsing info
java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 8080): connect failed: ECONNREFUSED (Connection refused)
at libcore.io.IoBridge.connect(IoBridge.java:124)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)
at java.net.Socket.connect(Socket.java:884)
at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67)
at com.android.okhttp.Connection.connect(Connection.java:152)
at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)
at java.net.URL.openStream(URL.java:470)
at com.jim.sharetocomputer.DownloadService.downloadInfo(DownloadService.kt:153)
at com.jim.sharetocomputer.DownloadService.access$downloadInfo(DownloadService.kt:39)
at com.jim.sharetocomputer.DownloadService$onHandleIntent$2.invokeSuspend(DownloadService.kt:123)
at com.jim.sharetocomputer.DownloadService$onHandleIntent$2.invoke(DownloadService.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:155)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at com.jim.sharetocomputer.DownloadService.onHandleIntent(DownloadService.kt:121)
at com.jim.sharetocomputer.DownloadService$onStartCommand$1.invokeSuspend(DownloadService.kt:63)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)
Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
at libcore.io.Posix.connect(Native Method)
at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
at libcore.io.IoBridge.connect(IoBridge.java:122)
I expected that I could cancel the QR code scanning process after selecting a file to share.
After selecting a file to share, when I canceled the QR code scanning process, then the app crashed.
Here is every possible detail to reproduce the bug.
https://www.youtube.com/watch?v=kH8UNpIGgls
07-07 00:06:33.632 5375 5375 E AndroidRuntime: FATAL EXCEPTION: main
07-07 00:06:33.632 5375 5375 E AndroidRuntime: Process: com.jim.sharetocomputer, PID: 5375
07-07 00:06:33.632 5375 5375 E AndroidRuntime: java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@308c95c
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1311)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.graphics.Canvas.drawBitmap(Canvas.java:1445)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:551)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.getDrawableRenderNode(View.java:17784)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.drawBackground(View.java:17708)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17515)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16517)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16512)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16512)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16512)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16512)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at androidx.drawerlayout.widget.DrawerLayout.drawChild(DrawerLayout.java:1426)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17527)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16517)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16512)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16512)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16512)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16512)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17293)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:3926)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3716)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.draw(View.java:17527)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:3184)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:16517)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:325)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:331)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:366)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewRootImpl.draw(ViewRootImpl.java:3234)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3033)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2615)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1528)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7524)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:686)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:622)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
07-07 00:06:33.632 5375 5375 E AndroidRuntime: at android.os.Handler.dispatchMes
When using a photo app other than google photos.
Try testing against simple gallery!
When I connect to STC via a web browser, the browser tab is titled ${app_title}.
Might want to edit that!
I want to select a different network interface - like my vpn.
Thanks!
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.