Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
e
os
eDrive
Commits
9ad7cb52
Commit
9ad7cb52
authored
Dec 10, 2019
by
vince-bourgmayer
Browse files
add ServiceExceptionHandler into utils package
parent
4095929c
Changes
2
Hide whitespace changes
Inline
Side-by-side
.idea/codeStyles/Project.xml
0 → 100644
View file @
9ad7cb52
<component
name=
"ProjectCodeStyleConfiguration"
>
<code_scheme
name=
"Project"
version=
"173"
>
<codeStyleSettings
language=
"XML"
>
<indentOptions>
<option
name=
"CONTINUATION_INDENT_SIZE"
value=
"4"
/>
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>
xmlns:android
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
^$
</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>
xmlns:.*
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
^$
</XML_NAMESPACE>
</AND>
</match>
<order>
BY_NAME
</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>
.*:id
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
http://schemas.android.com/apk/res/android
</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>
.*:name
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
http://schemas.android.com/apk/res/android
</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>
name
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
^$
</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>
style
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
^$
</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>
.*
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
^$
</XML_NAMESPACE>
</AND>
</match>
<order>
BY_NAME
</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>
.*
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
http://schemas.android.com/apk/res/android
</XML_NAMESPACE>
</AND>
</match>
<order>
ANDROID_ATTRIBUTE_ORDER
</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>
.*
</NAME>
<XML_ATTRIBUTE
/>
<XML_NAMESPACE>
.*
</XML_NAMESPACE>
</AND>
</match>
<order>
BY_NAME
</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
</code_scheme>
</component>
\ No newline at end of file
app/src/main/java/foundation/e/drive/utils/ServiceExceptionHandler.java
0 → 100644
View file @
9ad7cb52
/*
* Copyright © Vincent Bourgmayer (/e/ foundation).
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*/
package
foundation.e.drive.utils
;
import
android.app.Service
;
import
android.os.Environment
;
import
android.util.Log
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
import
java.lang.Thread.UncaughtExceptionHandler
;
/**
* @author Vincent Bourgmayer
*/
public
class
ServiceExceptionHandler
implements
UncaughtExceptionHandler
{
private
UncaughtExceptionHandler
defaultUEH
;
Service
service
;
public
ServiceExceptionHandler
(
Service
service
)
{
this
.
service
=
service
;
defaultUEH
=
Thread
.
getDefaultUncaughtExceptionHandler
();
}
@Override
public
void
uncaughtException
(
Thread
t
,
Throwable
e
)
{
if
(
isExternalStorageAvailable
()
&&
!
isExternalStorageReadOnly
()){
//Get TimeStamp
Long
timestamp
=
System
.
currentTimeMillis
();
//Create a new file that user can sent to us
String
fileName
=
"eDrive-crash-"
+
timestamp
+
".log"
;
File
downloadDir
=
new
File
(
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOWNLOADS
).
getPath
());
File
logFile
=
new
File
(
downloadDir
,
fileName
);
try
{
FileOutputStream
fos
=
new
FileOutputStream
(
logFile
);
fos
.
write
(
getStackTraceAsString
(
e
).
getBytes
());
fos
.
close
();
}
catch
(
IOException
exception
)
{
exception
.
printStackTrace
();
}
}
//source: https://stackoverflow.com/questions/9050962/rethrow-uncaughtexceptionhandler-exception-after-logging-it/9050990#9050990
if
(
defaultUEH
!=
null
){
defaultUEH
.
uncaughtException
(
t
,
e
);
}
else
{
Log
.
d
(
"ServiceExceptionHandler"
,
"/e/ Drive has crashed and there is no ExceptionHandler"
);
System
.
exit
(
1
);
//Kill /e/ Drive...
}
}
//source: https://www.journaldev.com/9400/android-external-storage-read-write-save-file
private
static
boolean
isExternalStorageAvailable
()
{
String
extStorageState
=
Environment
.
getExternalStorageState
();
if
(
Environment
.
MEDIA_MOUNTED
.
equals
(
extStorageState
))
{
return
true
;
}
return
false
;
}
//source: https://www.journaldev.com/9400/android-external-storage-read-write-save-file
private
static
boolean
isExternalStorageReadOnly
()
{
String
extStorageState
=
Environment
.
getExternalStorageState
();
if
(
Environment
.
MEDIA_MOUNTED_READ_ONLY
.
equals
(
extStorageState
))
{
return
true
;
}
return
false
;
}
/**
* Return the stackTrace of the exception as a String
* @param e the exception
* @return the Stacktrace as a string
*/
private
String
getStackTraceAsString
(
Throwable
e
){
StringWriter
sw
=
new
StringWriter
();
PrintWriter
pw
=
new
PrintWriter
(
sw
);
e
.
printStackTrace
(
pw
);
return
sw
.
toString
();
}
}
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment