Skip to content

Commit

Permalink
2019-05-27 17:05
Browse files Browse the repository at this point in the history
Bug fix
  • Loading branch information
Aryan-mor authored and Aryan-mor committed May 27, 2019
1 parent 4bef82b commit d60e2d8
Show file tree
Hide file tree
Showing 15 changed files with 212 additions and 101 deletions.
2 changes: 1 addition & 1 deletion UtilsLibrary/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ android {
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.3.2"
versionName "1.3.3"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

Expand Down
67 changes: 67 additions & 0 deletions UtilsLibrary/src/main/java/com/aryanmo/utils/utils/CheckUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.net.ConnectivityManager
import android.os.Build
import java.io.BufferedReader
import java.io.File
import java.io.InputStreamReader


@Deprecated(
Expand All @@ -21,3 +25,66 @@ fun Activity.checkNetwork(): Boolean {
val networkInfo = connectivityManager.activeNetworkInfo
return networkInfo != null && networkInfo.isConnected
}


fun isEmulator(): Boolean {
return (Build.FINGERPRINT.startsWith("generic")
|| Build.FINGERPRINT.startsWith("unknown")
|| Build.MODEL.contains("google_sdk")
|| Build.MODEL.contains("Emulator")
|| Build.MODEL.contains("Android SDK built for x86")
|| Build.MANUFACTURER.contains("Genymotion")
|| Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic")
|| "google_sdk" == Build.PRODUCT)
}

fun isDeviceRooted(): Boolean {
return RootUtil.isDeviceRooted()
}

private class RootUtil {

companion object {

fun isDeviceRooted(): Boolean {
return checkRootMethod1() || checkRootMethod2() || checkRootMethod3()
}

private fun checkRootMethod1(): Boolean{
val buildTags = android.os.Build.TAGS
return buildTags != null && buildTags.contains("test-keys")
}

private fun checkRootMethod2(): Boolean{
val paths = arrayOf(
"/system/app/Superuser.apk",
"/sbin/su",
"/system/bin/su",
"/system/xbin/su",
"/data/local/xbin/su",
"/data/local/bin/su",
"/system/sd/xbin/su",
"/system/bin/failsafe/su",
"/data/local/su",
"/su/bin/su"
)
for (path in paths) {
if (File(path).exists()) return true
}
return false
}

private fun checkRootMethod3(): Boolean{
var process: Process? = null
return try {
process = Runtime.getRuntime().exec(arrayOf("/system/xbin/which", "su"))
val bufferedReader = BufferedReader(InputStreamReader(process!!.inputStream))
bufferedReader.readLine() != null
} catch (t: Throwable) {
false
} finally {
process?.destroy()
}
}
}
}
34 changes: 22 additions & 12 deletions UtilsLibrary/src/main/java/com/aryanmo/utils/utils/GetUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,31 +11,40 @@ import android.support.v4.content.ContextCompat
import android.text.Spanned
import android.util.TypedValue
import com.aryanmo.utils.R
import com.aryanmo.utils.utils.log.log
import com.aryanmo.utils.utils.log.logError
import java.util.regex.Pattern

private fun Context.getString(s: String, html: Boolean = false): String {
if (true)
return s


var s = s
val matcher = Pattern.compile("\\{\\{(.+)\\}\\}").matcher(s)
while (matcher.find()) {
val matcher2 = Pattern.compile("\\w+").matcher(matcher.group(1))
val matcher2 = Pattern.compile("\\{\\{(\\w+)\\}\\}").matcher(s)
var text = ""
log("first")
while (matcher2.find()) {
if (text == "") {
text = this.getString(this.getResId(matcher2.group(), R.string::class.java))
text = this.getString(this.getResId(matcher2.group(1), R.string::class.java))
continue
}
text = applyFilter(text, matcher2.group())
}
s = matcher.replaceFirst(text)
s = matcher2.replaceFirst(text)
log("before s -> $s")
log("after s -> $s")
}
log("string -> $s")
if (html)
return s
return s.toHtml().toString()
}

fun Context.getString(s: String): String {
return this.getString( s, false)
return this.getString(s, false)
}

fun Context.getString(@StringRes stringIdRes: Int): String {
Expand All @@ -53,7 +62,8 @@ private fun Context.getResId(resName: String, c: Class<*>): Int {
return try {
this.resources.getIdentifier(
resName,
c.name.replace(com.aryanmo.utils.R::class.java.toString().replace("class", "").trim { it <= ' ' } + "$", ""),
c.name.replace(com.aryanmo.utils.R::class.java.toString().replace("class", "").trim { it <= ' ' } + "$",
""),
this.packageName)
} catch (e: Exception) {
logError("getResId", e)
Expand All @@ -63,10 +73,10 @@ private fun Context.getResId(resName: String, c: Class<*>): Int {
}

fun Context.getStrings(divider: String, @StringRes vararg stringIdRes: Int): String {
val s = StringBuilder(this.getString( stringIdRes[0]))
val s = StringBuilder(this.getString(stringIdRes[0]))
if (stringIdRes.size >= 2) {
for (i in 1 until stringIdRes.size) {
s.append(divider).append(this.getString( stringIdRes[i]))
s.append(divider).append(this.getString(stringIdRes[i]))
}
}
return this.getStrings(s.toString())
Expand All @@ -92,14 +102,14 @@ private fun applyFilter(s: String, filter: String): String {

//SPANNED

fun Context.getSpanned( s: String): Spanned {
return this.getString( s, true).toHtml()
fun Context.getSpanned(s: String): Spanned {
return this.getString(s, true).toHtml()
}

fun Context.getSpanned(@StringRes stringIdRes: Int): Spanned? {
return try {
val s = this.resources.getString(stringIdRes)
this.getSpanned( s)
this.getSpanned(s)
} catch (e: Exception) {
logError("getString(Context context, @StringRes int stringIdRes)", e)
null
Expand All @@ -117,8 +127,8 @@ fun Context.getSpanneds(divider: String, @StringRes vararg stringIdRes: Int): Sp
return this.getSpanned(s.toString())
}

fun Context.getFormattedSpanned( @StringRes stringIdRes: Int, vararg args: Any): Spanned {
return this.getSpanned( String.format(getString(stringIdRes), *args))
fun Context.getFormattedSpanned(@StringRes stringIdRes: Int, vararg args: Any): Spanned {
return this.getSpanned(String.format(getString(stringIdRes), *args))
}

//DIMEN
Expand Down
47 changes: 38 additions & 9 deletions UtilsLibrary/src/main/java/com/aryanmo/utils/utils/Utils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.res.Resources
import android.net.Uri
import android.os.Build
import android.os.VibrationEffect
Expand Down Expand Up @@ -100,7 +99,7 @@ private fun closeApp() {

fun Activity.restartApp() {
val intent = this.baseContext.packageManager
.getLaunchIntentForPackage(this.baseContext.packageName)
.getLaunchIntentForPackage(this.baseContext.packageName)
intent!!.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
this.startActivity(intent)
}
Expand All @@ -113,19 +112,32 @@ fun String.toHtml(): Spanned {
}
}

fun Activity.delayOnUiThread(duration: Int, runnable: Runnable?) {
@Deprecated(
"function change to Activity.delayOnUiThread(duration: Int){}",
ReplaceWith("Activity.delayOnUiThread(duration: Int){}")
)
fun Activity.delayOnUiThread(duration: Int, runnable: Runnable? = null) {
this.delayOnUiThread(duration) {
runnable?.run()
}
}

fun Activity.delayOnUiThread(duration: Int, runnable: () -> Unit) {
Thread(Runnable {
try {
Thread.sleep(duration.toLong())
} catch (e: InterruptedException) {
e.printStackTrace()
}

if (runnable != null)
this.runOnUiThread(runnable)
runnable()
}).start()
}

fun Activity.delayOnUiThread(duration: Int) {
this.delayOnUiThread(duration) {
}
}

fun delay(duration: Long) {
Thread(Runnable {
try {
Expand All @@ -136,7 +148,7 @@ fun delay(duration: Long) {
})
}

fun Context.dpTOInt( f: Float): Int {
fun Context.dpTOInt(f: Float): Int {
val scale = this.resources.displayMetrics.density
return (f * scale + 0.5f).toInt()
}
Expand All @@ -152,7 +164,7 @@ fun Context.dpToFloat(dp: Float): Float {
fun Activity.hideSoftKeyboard() {
try {
val view = currentFocus ?: return
this.hideSoftKeyboard( view)
this.hideSoftKeyboard(view)
} catch (e: Exception) {
logError("hideSoftKeyboard", e)
}
Expand Down Expand Up @@ -196,6 +208,23 @@ fun Context.isLandscape(): Boolean {
return !isPortrait()
}

fun isRTL(): Boolean {
return isRTL(Locale.getDefault())
}

fun isRTL(locale: Locale): Boolean {
val directionality = Character.getDirectionality(locale.displayName[0]).toInt()
return directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT.toInt() || directionality == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC.toInt()
}

fun isLtr(): Boolean {
return !isLtr(Locale.getDefault())
}

fun isLtr(locale: Locale): Boolean {
return !isRTL(locale)
}

//Vibrate
@SuppressLint("MissingPermission")
fun Activity.vibrate(vibrationEffect: VibrationEffect): Vibrator? {
Expand All @@ -215,7 +244,7 @@ fun Activity.vibrate(vibrationEffect: VibrationEffect): Vibrator? {
}

@SuppressLint("MissingPermission")
fun Activity.vibrate( milliseconds: Long, amplitude: Int): Vibrator {
fun Activity.vibrate(milliseconds: Long, amplitude: Int): Vibrator {
val v = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator?

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@ fun logD(context: Context?, logMessage: Any, logFlag: String = FLAG) =

fun logD(logMessage: Any, logFlag: String = FLAG) = log(logMessage, logFlag, LOG_DEBUG_MODE)

fun Any.logD(context: Context?, logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(context = context, logFlag = logFlag, logType = logType)
fun Any.logThisD(context: Context?, logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(context = context, logFlag = logFlag, logType = logType)

fun Any.logD(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun Any.logThisD(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)

fun String.logDJson(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logJson(logFlag = logFlag, logType = logType)

fun Map<*, *>.logD(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun Map<*, *>.logThisD(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)

fun List<*>.logD(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun List<*>.logThisD(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,23 @@ package com.aryanmo.utils.utils.log

import android.content.Context
import com.aryanmo.utils.utils.FLAG
import java.util.*

fun logE(context: Context?, logMessage: Any, logFlag: String = FLAG) =
log(context, logMessage, logFlag, LOG_DEBUG_MODE)

fun logE(logMessage: Any, logFlag: String = FLAG) = log(logMessage, logFlag, LOG_DEBUG_MODE)

fun Any.logE(context: Context?, logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(context = context, logFlag = logFlag, logType = logType)
fun Any.logThisE(context: Context?, logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(context = context, logFlag = logFlag, logType = logType)

fun Any.logE(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun Any.logThisE(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)

fun String.logEJson(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logJson(logFlag = logFlag, logType = logType)

fun Map<*, *>.logE(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun Map<*, *>.logThisE(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)

fun List<*>.logE(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun List<*>.logThisE(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,24 @@ package com.aryanmo.utils.utils.log

import android.content.Context
import com.aryanmo.utils.utils.FLAG
import java.util.*


fun logI(context: Context?, logMessage: Any, logFlag: String = FLAG) =
log(context, logMessage, logFlag, LOG_DEBUG_MODE)

fun logI(logMessage: Any, logFlag: String = FLAG) = log(logMessage, logFlag, LOG_DEBUG_MODE)

fun Any.logI(context: Context?, logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(context = context, logFlag = logFlag, logType = logType)
fun Any.logThisI(context: Context?, logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(context = context, logFlag = logFlag, logType = logType)

fun Any.logI(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun Any.logThisI(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)

fun String.logIJson(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logJson(logFlag = logFlag, logType = logType)

fun Map<*, *>.logI(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun Map<*, *>.logThisI(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)

fun List<*>.logI(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.log(logFlag = logFlag, logType = logType)
fun List<*>.logThisI(logFlag: String = FLAG, logType: Int = DEFAULT_LOG_MODE) =
this.logThis(logFlag = logFlag, logType = logType)
Loading

0 comments on commit d60e2d8

Please sign in to comment.