import android.app.Dialog
import android.content.DialogInterface
import android.content.Intent
import android.app.Dialog
import android.content.DialogInterface
import android.content.Intent
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.
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments.
val arguments = requireArguments()
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
// Get the arguments.
val arguments = requireArguments()
// 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)
// 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)