mirror of
https://github.com/KitsunePie/AppErrorsTracking.git
synced 2025-09-04 10:15:18 +08:00
Merge startActivity to navigate
This commit is contained in:
@@ -24,11 +24,9 @@
|
|||||||
package com.fankes.apperrorstracking.ui.activity
|
package com.fankes.apperrorstracking.ui.activity
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.ComponentName
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
import com.fankes.apperrorstracking.BuildConfig
|
|
||||||
import com.fankes.apperrorstracking.R
|
import com.fankes.apperrorstracking.R
|
||||||
import com.fankes.apperrorstracking.bean.AppErrorsInfoBean
|
import com.fankes.apperrorstracking.bean.AppErrorsInfoBean
|
||||||
import com.fankes.apperrorstracking.databinding.ActivityAppErrorsDetailBinding
|
import com.fankes.apperrorstracking.databinding.ActivityAppErrorsDetailBinding
|
||||||
@@ -53,16 +51,8 @@ class AppErrorsDetailActivity : BaseActivity<ActivityAppErrorsDetailBinding>() {
|
|||||||
* @param appErrorsInfo 应用异常信息
|
* @param appErrorsInfo 应用异常信息
|
||||||
* @param isOutSide 是否从外部启动
|
* @param isOutSide 是否从外部启动
|
||||||
*/
|
*/
|
||||||
fun start(context: Context, appErrorsInfo: AppErrorsInfoBean, isOutSide: Boolean = false) {
|
fun start(context: Context, appErrorsInfo: AppErrorsInfoBean, isOutSide: Boolean = false) =
|
||||||
runCatching {
|
context.navigate<AppErrorsDetailActivity>(isOutSide) { putExtra(FrameworkHooker.APP_ERRORS_INFO, appErrorsInfo) }
|
||||||
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") }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 预导出的异常堆栈 */
|
/** 预导出的异常堆栈 */
|
||||||
|
@@ -23,10 +23,9 @@
|
|||||||
|
|
||||||
package com.fankes.apperrorstracking.utils.factory
|
package com.fankes.apperrorstracking.utils.factory
|
||||||
|
|
||||||
import android.content.ClipData
|
import android.app.Activity
|
||||||
import android.content.ClipboardManager
|
import android.app.Service
|
||||||
import android.content.Context
|
import android.content.*
|
||||||
import android.content.Intent
|
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
@@ -35,6 +34,7 @@ import android.graphics.drawable.Drawable
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import com.fankes.apperrorstracking.BuildConfig
|
||||||
import com.fankes.apperrorstracking.locale.LocaleString
|
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()
|
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 要复制的文本
|
* @param content 要复制的文本
|
||||||
|
Reference in New Issue
Block a user