private const val SHORTCUT_NAME = "shortcut_name"
private const val URL_STRING = "url_string"
private const val FAVORITE_ICON_BYTE_ARRAY = "favorite_icon_byte_array"
private const val SHORTCUT_NAME = "shortcut_name"
private const val URL_STRING = "url_string"
private const val FAVORITE_ICON_BYTE_ARRAY = "favorite_icon_byte_array"
// Declare the class views.
private lateinit var shortcutNameEditText: EditText
private lateinit var urlEditText: EditText
private lateinit var openWithPrivacyBrowserRadioButton: RadioButton
companion object {
// Declare the class views.
private lateinit var shortcutNameEditText: EditText
private lateinit var urlEditText: EditText
private lateinit var openWithPrivacyBrowserRadioButton: RadioButton
companion object {
@JvmStatic
fun createDialog(shortcutName: String, urlString: String, favoriteIconBitmap: Bitmap): CreateHomeScreenShortcutDialog {
// Create a favorite icon byte array output stream.
@JvmStatic
fun createDialog(shortcutName: String, urlString: String, favoriteIconBitmap: Bitmap): CreateHomeScreenShortcutDialog {
// Create a favorite icon byte array output stream.
// Convert the favorite icon to a PNG and place it in the byte array output stream. `0` is for lossless compression (the only option for a PNG).
favoriteIconBitmap.compress(Bitmap.CompressFormat.PNG, 0, favoriteIconByteArrayOutputStream)
// Convert the favorite icon to a PNG and place it in the byte array output stream. `0` is for lossless compression (the only option for a PNG).
favoriteIconBitmap.compress(Bitmap.CompressFormat.PNG, 0, favoriteIconByteArrayOutputStream)
val favoriteIconByteArray = favoriteIconByteArrayOutputStream.toByteArray()
// Create an arguments bundle.
val favoriteIconByteArray = favoriteIconByteArrayOutputStream.toByteArray()
// Create an arguments bundle.
// Convert the favorite icon byte array to a bitmap.
val favoriteIconBitmap = BitmapFactory.decodeByteArray(favoriteIconByteArray, 0, favoriteIconByteArray.size)
// Convert the favorite icon byte array to a bitmap.
val favoriteIconBitmap = BitmapFactory.decodeByteArray(favoriteIconByteArray, 0, favoriteIconByteArray.size)
// Create a drawable version of the favorite icon.
val favoriteIconDrawable: Drawable = BitmapDrawable(resources, favoriteIconBitmap)
// Create a drawable version of the favorite icon.
val favoriteIconDrawable: Drawable = BitmapDrawable(resources, favoriteIconBitmap)
dialogBuilder.setIcon(favoriteIconDrawable)
// Set the view. The parent view is null because it will be assigned by the alert dialog.
dialogBuilder.setIcon(favoriteIconDrawable)
// Set the view. The parent view is null because it will be assigned by the alert dialog.
// Set a listener on the close button. Using null closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)
// Set a listener on the close button. Using null closes the dialog without doing anything else.
dialogBuilder.setNegativeButton(R.string.cancel, null)