Handle tile intents without IntentManager (#5635)

This commit is contained in:
David Perez
2025-08-01 15:31:25 -05:00
committed by GitHub
parent f614d6039f
commit 7cc3c1c755
4 changed files with 30 additions and 46 deletions

View File

@@ -1,24 +1,22 @@
package com.x8bit.bitwarden.data.tiles
import android.annotation.SuppressLint
import android.app.PendingIntent
import android.content.Intent
import android.os.Build
import android.service.quicksettings.TileService
import androidx.annotation.Keep
import androidx.core.net.toUri
import com.bitwarden.annotation.OmitFromCoverage
import com.bitwarden.core.util.isBuildVersionAtLeast
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import com.x8bit.bitwarden.MainActivity
/**
* A service for handling the Password Generator quick settings tile.
*/
@AndroidEntryPoint
@Keep
@OmitFromCoverage
class BitwardenGeneratorTileService : TileService() {
@Inject
lateinit var intentManager: IntentManager
override fun onClick() {
if (isLocked) {
@@ -29,13 +27,22 @@ class BitwardenGeneratorTileService : TileService() {
}
private fun launchGenerator() {
val intent = intentManager.createTileIntent("bitwarden://password_generator")
val intent = Intent(applicationContext, MainActivity::class.java)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setData("bitwarden://password_generator".toUri())
if (!isBuildVersionAtLeast(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)) {
@Suppress("DEPRECATION")
@SuppressLint("StartActivityAndCollapseDeprecated")
startActivityAndCollapse(intent)
} else {
startActivityAndCollapse(intentManager.createTilePendingIntent(0, intent))
startActivityAndCollapse(
PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_IMMUTABLE,
),
)
}
}
}

View File

@@ -1,24 +1,22 @@
package com.x8bit.bitwarden.data.tiles
import android.annotation.SuppressLint
import android.app.PendingIntent
import android.content.Intent
import android.os.Build
import android.service.quicksettings.TileService
import androidx.annotation.Keep
import androidx.core.net.toUri
import com.bitwarden.annotation.OmitFromCoverage
import com.bitwarden.core.util.isBuildVersionAtLeast
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
import com.x8bit.bitwarden.MainActivity
/**
* A service for handling the My Vault quick settings tile.
*/
@AndroidEntryPoint
@Keep
@OmitFromCoverage
class BitwardenVaultTileService : TileService() {
@Inject
lateinit var intentManager: IntentManager
override fun onClick() {
if (isLocked) {
@@ -29,13 +27,22 @@ class BitwardenVaultTileService : TileService() {
}
private fun launchVault() {
val intent = intentManager.createTileIntent("bitwarden://my_vault")
val intent = Intent(applicationContext, MainActivity::class.java)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setData("bitwarden://my_vault".toUri())
if (!isBuildVersionAtLeast(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)) {
@Suppress("DEPRECATION")
@SuppressLint("StartActivityAndCollapseDeprecated")
startActivityAndCollapse(intent)
} else {
startActivityAndCollapse(intentManager.createTilePendingIntent(0, intent))
startActivityAndCollapse(
PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_IMMUTABLE,
),
)
}
}
}

View File

@@ -106,17 +106,6 @@ interface IntentManager {
*/
fun createDocumentIntent(fileName: String): Intent
/**
* Creates an intent using [data] when selecting a quick settings tile.
*/
fun createTileIntent(data: String): Intent
/**
* Creates a pending intent using [requestCode] and [tileIntent] when selecting a quick
* settings tile on API 34+.
*/
fun createTilePendingIntent(requestCode: Int, tileIntent: Intent): PendingIntent
/**
* Creates a pending intent to use when providing [CreateEntry]
* instances for FIDO 2 credential creation.

View File

@@ -28,7 +28,6 @@ import com.bitwarden.core.data.util.toFormattedPattern
import com.bitwarden.core.util.isBuildVersionAtLeast
import com.bitwarden.ui.platform.resource.BitwardenString
import com.x8bit.bitwarden.BuildConfig
import com.x8bit.bitwarden.MainActivity
import com.x8bit.bitwarden.data.autofill.model.browser.BrowserPackage
import com.x8bit.bitwarden.data.autofill.util.toPendingIntentMutabilityFlag
import java.io.File
@@ -289,24 +288,6 @@ class IntentManagerImpl(
putExtra(Intent.EXTRA_TITLE, fileName)
}
override fun createTileIntent(data: String): Intent {
return Intent(
context,
MainActivity::class.java,
)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.setData(data.toUri())
}
override fun createTilePendingIntent(requestCode: Int, tileIntent: Intent): PendingIntent {
return PendingIntent.getActivity(
context,
requestCode,
tileIntent,
PendingIntent.FLAG_IMMUTABLE,
)
}
override fun createFido2CreationPendingIntent(
action: String,
userId: String,