Minor style changes

pull/596/head
Alinson S. Xavier 5 years ago
parent 0058089e7d
commit 59c8031372

@ -38,52 +38,46 @@ open class AndroidBugReporter @Inject constructor(@AppContext private val contex
*/
@Throws(IOException::class)
fun getBugReport(): String {
val logcat = logcat
val deviceInfo = getDeviceInfo()
var log = "---------- BUG REPORT BEGINS ----------\n"
log += """
$deviceInfo
$logcat
""".trimIndent()
log += "${getLogcat()}\n"
log += "${getDeviceInfo()}\n"
log += "---------- BUG REPORT ENDS ------------\n"
return log
}
@get:Throws(IOException::class)
val logcat: String
get() {
val maxLineCount = 250
val builder = StringBuilder()
val command = arrayOf("logcat", "-d")
val process = Runtime.getRuntime().exec(command)
val inputReader = InputStreamReader(process.inputStream)
val bufferedReader = BufferedReader(inputReader)
val log = LinkedList<String>()
var line: String
while (bufferedReader.readLine().also { line = it } != null) {
log.addLast(line)
if (log.size > maxLineCount) log.removeFirst()
}
for (l in log) {
builder.appendln(l)
}
return builder.toString()
@Throws(IOException::class)
fun getLogcat(): String {
val maxLineCount = 250
val builder = StringBuilder()
val process = Runtime.getRuntime().exec(arrayOf("logcat", "-d"))
val inputReader = InputStreamReader(process.inputStream)
val bufferedReader = BufferedReader(inputReader)
val log = LinkedList<String>()
var line: String?
while (true) {
line = bufferedReader.readLine()
if (line == null) break;
log.addLast(line)
if (log.size > maxLineCount) log.removeFirst()
}
for (l in log) {
builder.appendln(l)
}
return builder.toString()
}
/**
* Captures a bug report and saves it to a file in the SD card.
*
*
* The contents of the file are generated by the method [ ][.getBugReport]. The file is saved in the apps's external private
* storage.
* The contents of the file are generated by the method [ ][.getBugReport]. The file is saved
* in the apps's external private storage.
*
* @return the generated file.
* @throws IOException when I/O errors occur.
*/
fun dumpBugReportToFile() {
try {
val date = SimpleDateFormat("yyyy-MM-dd HHmmss", Locale.US).format(
Date())
val date = SimpleDateFormat("yyyy-MM-dd HHmmss", Locale.US).format(Date())
val dir = AndroidDirFinder(context).getFilesDir("Logs")
?: throw IOException("log dir should not be null")
val logFile = File(String.format("%s/Log %s.txt", dir.path, date))

@ -25,9 +25,10 @@ import java.io.File
import javax.inject.Inject
class AndroidDirFinder @Inject constructor(@param:AppContext private val context: Context) {
fun getFilesDir(relativePath: String?): File? =
FileUtils.getDir(
ContextCompat.getExternalFilesDirs(context, null),
relativePath
)
fun getFilesDir(relativePath: String?): File? {
return FileUtils.getDir(
ContextCompat.getExternalFilesDirs(context, null),
relativePath
)
}
}

@ -22,25 +22,18 @@ import org.isoron.androidbase.activities.BaseActivity
class BaseExceptionHandler(private val activity: BaseActivity) : Thread.UncaughtExceptionHandler {
private val originalHandler: Thread.UncaughtExceptionHandler? = Thread.getDefaultUncaughtExceptionHandler()
private val originalHandler: Thread.UncaughtExceptionHandler? =
Thread.getDefaultUncaughtExceptionHandler()
override fun uncaughtException(thread: Thread?, ex: Throwable?) {
ex?.let { ex ->
try {
ex.printStackTrace()
AndroidBugReporter(activity).dumpBugReportToFile()
} catch (e: Exception) {
e.printStackTrace()
}
// if (ex.cause is InconsistentDatabaseException) {
// val app = activity.application as HabitsApplication
// val habits = app.getComponent().getHabitList()
// habits.repair()
// System.exit(0)
// }
originalHandler?.uncaughtException(thread, ex)
if (ex == null) return
if (thread == null) return
try {
ex.printStackTrace()
AndroidBugReporter(activity).dumpBugReportToFile()
} catch (e: Exception) {
e.printStackTrace()
}
originalHandler?.uncaughtException(thread, ex)
}
}

@ -26,26 +26,23 @@ import javax.net.ssl.SSLContext
import javax.net.ssl.TrustManagerFactory
class SSLContextProvider @Inject constructor(@param:AppContext private val context: Context) {
fun getCACertSSLContext(): SSLContext =
try {
val ca = CertificateFactory.getInstance("X.509")
.let { cf ->
context.assets.open("cacert.pem")
.use { caInput ->
cf.generateCertificate(caInput)
}
}
val ks = KeyStore.getInstance(KeyStore.getDefaultType())
.apply {
load(null, null)
setCertificateEntry("ca", ca)
}
val tmf =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
.apply { init(ks) }
SSLContext.getInstance("TLS")
.apply { init(null, tmf.trustManagers, null) }
} catch (e: Exception) {
throw RuntimeException(e)
fun getCACertSSLContext(): SSLContext {
try {
val cf = CertificateFactory.getInstance("X.509")
val ca = cf.generateCertificate(context.assets.open("cacert.pem"))
val ks = KeyStore.getInstance(KeyStore.getDefaultType()).apply {
load(null, null)
setCertificateEntry("ca", ca)
}
val alg = TrustManagerFactory.getDefaultAlgorithm()
val tmf = TrustManagerFactory.getInstance(alg).apply {
init(ks)
}
return SSLContext.getInstance("TLS").apply {
init(null, tmf.trustManagers, null)
}
} catch (e: Exception) {
throw RuntimeException(e)
}
}
}
Loading…
Cancel
Save