pull/1551/head
gedoor 3 years ago
parent f59556be14
commit d9567fa573
  1. 15
      app/src/main/java/io/legado/app/help/IntentHelp.kt
  2. 44
      app/src/main/java/io/legado/app/utils/ContextExtensions.kt

@ -2,12 +2,27 @@ package io.legado.app.help
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri
import io.legado.app.R import io.legado.app.R
import io.legado.app.utils.toastOnUi import io.legado.app.utils.toastOnUi
import splitties.init.appCtx
@Suppress("unused") @Suppress("unused")
object IntentHelp { object IntentHelp {
fun getBrowserIntent(url: String): Intent {
return getBrowserIntent(Uri.parse(url))
}
fun getBrowserIntent(uri: Uri): Intent {
val intent = Intent(Intent.ACTION_VIEW)
intent.data = uri
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
if (intent.resolveActivity(appCtx.packageManager) == null) {
return Intent.createChooser(intent, "请选择浏览器")
}
return intent
}
fun toTTSSetting(context: Context) { fun toTTSSetting(context: Context) {
//跳转到文字转语音设置界面 //跳转到文字转语音设置界面

@ -27,6 +27,7 @@ import androidx.preference.PreferenceManager
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
import io.legado.app.R import io.legado.app.R
import io.legado.app.constant.AppConst import io.legado.app.constant.AppConst
import io.legado.app.help.IntentHelp
import timber.log.Timber import timber.log.Timber
import java.io.File import java.io.File
import java.io.FileOutputStream import java.io.FileOutputStream
@ -62,6 +63,20 @@ inline fun <reified T : Service> Context.servicePendingIntent(
return getService(this, 0, intent, flags) return getService(this, 0, intent, flags)
} }
@SuppressLint("UnspecifiedImmutableFlag")
fun Context.activityPendingIntent(
intent: Intent,
action: String
): PendingIntent? {
intent.action = action
val flags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
FLAG_UPDATE_CURRENT or FLAG_MUTABLE
} else {
FLAG_UPDATE_CURRENT
}
return getActivity(this, 0, intent, flags)
}
@SuppressLint("UnspecifiedImmutableFlag") @SuppressLint("UnspecifiedImmutableFlag")
inline fun <reified T : Activity> Context.activityPendingIntent( inline fun <reified T : Activity> Context.activityPendingIntent(
action: String, action: String,
@ -145,8 +160,8 @@ fun Context.restart() {
intent?.let { intent?.let {
intent.addFlags( intent.addFlags(
Intent.FLAG_ACTIVITY_NEW_TASK Intent.FLAG_ACTIVITY_NEW_TASK
or Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
) )
startActivity(intent) startActivity(intent)
//杀掉以前进程 //杀掉以前进程
@ -284,25 +299,18 @@ val Context.externalCache: File
get() = this.externalCacheDir ?: this.cacheDir get() = this.externalCacheDir ?: this.cacheDir
fun Context.openUrl(url: String) { fun Context.openUrl(url: String) {
openUrl(Uri.parse(url)) try {
startActivity(IntentHelp.getBrowserIntent(url))
} catch (e: Exception) {
toastOnUi(e.localizedMessage ?: "open url error")
}
} }
fun Context.openUrl(uri: Uri) { fun Context.openUrl(uri: Uri) {
val intent = Intent(Intent.ACTION_VIEW) try {
intent.data = uri startActivity(IntentHelp.getBrowserIntent(uri))
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } catch (e: Exception) {
if (intent.resolveActivity(packageManager) != null) { toastOnUi(e.localizedMessage ?: "open url error")
try {
startActivity(intent)
} catch (e: Exception) {
toastOnUi(e.localizedMessage ?: "open url error")
}
} else {
try {
startActivity(Intent.createChooser(intent, "请选择浏览器"))
} catch (e: Exception) {
toastOnUi(e.localizedMessage ?: "open url error")
}
} }
} }

Loading…
Cancel
Save