Merge startActivity to navigate

This commit is contained in:
2022-05-12 01:14:54 +08:00
parent 0e8d7bc733
commit 9fe224fc3a
2 changed files with 22 additions and 16 deletions

View File

@@ -24,11 +24,9 @@
package com.fankes.apperrorstracking.ui.activity
import android.app.Activity
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import androidx.core.view.isGone
import com.fankes.apperrorstracking.BuildConfig
import com.fankes.apperrorstracking.R
import com.fankes.apperrorstracking.bean.AppErrorsInfoBean
import com.fankes.apperrorstracking.databinding.ActivityAppErrorsDetailBinding
@@ -53,16 +51,8 @@ class AppErrorsDetailActivity : BaseActivity<ActivityAppErrorsDetailBinding>() {
* @param appErrorsInfo 应用异常信息
* @param isOutSide 是否从外部启动
*/
fun start(context: Context, appErrorsInfo: AppErrorsInfoBean, isOutSide: Boolean = false) {
runCatching {
context.startActivity((if (isOutSide) Intent() else Intent(context, AppErrorsDetailActivity::class.java)).apply {
flags = if (context !is Activity) Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
else Intent.FLAG_ACTIVITY_NEW_TASK
if (isOutSide) component = ComponentName(BuildConfig.APPLICATION_ID, AppErrorsDetailActivity::class.java.name)
putExtra(FrameworkHooker.APP_ERRORS_INFO, appErrorsInfo)
})
}.onFailure { context.toast(msg = "Start AppErrorsDetailActivity failed") }
}
fun start(context: Context, appErrorsInfo: AppErrorsInfoBean, isOutSide: Boolean = false) =
context.navigate<AppErrorsDetailActivity>(isOutSide) { putExtra(FrameworkHooker.APP_ERRORS_INFO, appErrorsInfo) }
}
/** 预导出的异常堆栈 */

View File

@@ -23,10 +23,9 @@
package com.fankes.apperrorstracking.utils.factory
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.Intent
import android.app.Activity
import android.app.Service
import android.content.*
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.graphics.Color
@@ -35,6 +34,7 @@ import android.graphics.drawable.Drawable
import android.net.Uri
import android.provider.Settings
import android.widget.Toast
import com.fankes.apperrorstracking.BuildConfig
import com.fankes.apperrorstracking.locale.LocaleString
/**
@@ -101,6 +101,22 @@ fun Context.appIcon(packageName: String) =
*/
fun Context.toast(msg: String) = Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
/**
* 跳转到指定页面
*
* [T] 为指定的 [Activity]
* @param isOutSide 是否从外部启动
* @param callback 回调 [Intent] 方法体
*/
inline fun <reified T : Activity> Context.navigate(isOutSide: Boolean = false, callback: Intent.() -> Unit = {}) = runCatching {
startActivity((if (isOutSide) Intent() else Intent(if (this is Service) applicationContext else this, T::class.java)).apply {
flags = if (this@navigate !is Activity) Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
else Intent.FLAG_ACTIVITY_NEW_TASK
if (isOutSide) component = ComponentName(BuildConfig.APPLICATION_ID, T::class.java.name)
callback(this)
})
}.onFailure { toast(msg = "Start ${T::class.java.name} failed") }
/**
* 复制到剪贴板
* @param content 要复制的文本