diff options
Diffstat (limited to 'taler-kotlin-android/src/main/java/net/taler/common/AndroidUtils.kt')
-rw-r--r-- | taler-kotlin-android/src/main/java/net/taler/common/AndroidUtils.kt | 47 |
1 files changed, 32 insertions, 15 deletions
diff --git a/taler-kotlin-android/src/main/java/net/taler/common/AndroidUtils.kt b/taler-kotlin-android/src/main/java/net/taler/common/AndroidUtils.kt index 4ac2e73..8f3e5d5 100644 --- a/taler-kotlin-android/src/main/java/net/taler/common/AndroidUtils.kt +++ b/taler-kotlin-android/src/main/java/net/taler/common/AndroidUtils.kt @@ -16,12 +16,14 @@ package net.taler.common +import android.Manifest.permission.ACCESS_NETWORK_STATE import android.content.ActivityNotFoundException import android.content.Context import android.content.Context.CONNECTIVITY_SERVICE import android.content.Intent import android.net.ConnectivityManager import android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET +import android.net.Uri import android.os.Build.VERSION.SDK_INT import android.os.Looper import android.text.format.DateUtils.DAY_IN_MILLIS @@ -40,16 +42,14 @@ import android.view.View import android.view.View.INVISIBLE import android.view.View.VISIBLE import android.view.inputmethod.InputMethodManager +import androidx.annotation.RequiresPermission import androidx.annotation.StringRes import androidx.core.content.ContextCompat.getSystemService import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.navigation.NavDirections import androidx.navigation.fragment.findNavController -import com.github.pedrovgs.lynx.LynxActivity -import com.github.pedrovgs.lynx.LynxConfig import net.taler.lib.android.ErrorBottomSheet -import net.taler.lib.common.Version fun View.fadeIn(endAction: () -> Unit = {}) { if (visibility == VISIBLE && alpha == 1f) return @@ -85,6 +85,7 @@ fun assertUiThread() { val <T> T.exhaustive: T get() = this +@RequiresPermission(ACCESS_NETWORK_STATE) fun Context.isOnline(): Boolean { val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager return if (SDK_INT < 29) { @@ -96,24 +97,23 @@ fun Context.isOnline(): Boolean { } } -fun Context.showLogViewer(logFilter: String? = null) { - val lynxActivityIntent = LynxActivity.getIntent(this, LynxConfig().apply { - maxNumberOfTracesToShow = 1500 // higher numbers seem to break share functionality - samplingRate = Int.MAX_VALUE // no updates please - logFilter?.let { filter = it } - }) - startActivity(lynxActivityIntent) -} - fun FragmentActivity.showError(mainText: String, detailText: String = "") = ErrorBottomSheet - .newInstance(mainText, detailText) - .show(supportFragmentManager, "ERROR_BOTTOM_SHEET") + .newInstance(mainText, detailText) + .show(supportFragmentManager, "ERROR_BOTTOM_SHEET") fun FragmentActivity.showError(@StringRes mainId: Int, detailText: String = "") { showError(getString(mainId), detailText) } -fun Fragment.startActivitySafe(intent: Intent) { +fun Fragment.showError(mainText: String, detailText: String = "") = ErrorBottomSheet + .newInstance(mainText, detailText) + .show(parentFragmentManager, "ERROR_BOTTOM_SHEET") + +fun Fragment.showError(@StringRes mainId: Int, detailText: String = "") { + showError(getString(mainId), detailText) +} + +fun Context.startActivitySafe(intent: Intent) { try { startActivity(intent) } catch (e: ActivityNotFoundException) { @@ -121,6 +121,23 @@ fun Fragment.startActivitySafe(intent: Intent) { } } +fun Context.openUri(uri: String, title: String) { + val intent = Intent(Intent.ACTION_VIEW).apply { + data = Uri.parse(uri) + } + + startActivitySafe(Intent.createChooser(intent, title)) +} + +fun Context.shareText(text: String) { + val intent = Intent(Intent.ACTION_SEND).apply { + putExtra(Intent.EXTRA_TEXT, text) + type = "text/plain" + } + + startActivitySafe(Intent.createChooser(intent, null)) +} + fun Fragment.navigate(directions: NavDirections) = findNavController().navigate(directions) fun Long.toRelativeTime(context: Context): CharSequence { |