import
android.R.attr
import
android.annotation.SuppressLint
import
android.app.StatusBarManager
import
android.content material.ComponentName
import
android.content material.Context
import
android.content material.Intent
import
android.content material.pm.PackageManager
import
android.graphics.drawable.Icon
import
android.internet.Uri
import
android.internet.wifi.WifiManager
import
android.os.Construct
import
android.os.Bundle
import
android.supplier.MediaStore
import
android.widget.Button
import
android.widget.ImageView
import
android.widget.TextView
import
android.widget.Toast
import
androidx.exercise.outcome.ActivityResultLauncher
import
androidx.exercise.outcome.contract.ActivityResultContracts
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.content material.ContextCompat
import
com.google.android.materials.dialog.MaterialAlertDialogBuilder
import
java.util.jar.Manifest
Â
Â
class
MainActivity : AppCompatActivity() {
   Â
   Â
personal
lateinit var permissionLauncher: ActivityResultLauncher<String>
   Â
personal
lateinit var startHotspotBtn: Button
   Â
personal
lateinit var statusTV: TextView
Â
Â
   Â
   Â
personal
val wifiManager: WifiManager by lazy {
       Â
applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
   Â
}
Â
Â
   Â
@SuppressLint
(
"WrongConstant"
)
   Â
override enjoyable onCreate(savedInstanceState: Bundle?) {
       Â
tremendous
.onCreate(savedInstanceState)
       Â
setContentView(R.format.activity_main)
Â
Â
       Â
       Â
permissionLauncher = registerForActivityResult(
           Â
           Â
ActivityResultContracts.RequestPermission()
       Â
) { isGranted: Boolean ->
           Â
if
(isGranted) {
               Â
               Â
startHotSpot()
           Â
}
else
{
               Â
               Â
Toast.makeText(
                   Â
this
,
                   Â
"Please permit the Close by Wi-Fi Units permission for this app"
,
                   Â
Toast.LENGTH_LONG,
               Â
).present()
           Â
}
       Â
}
Â
Â
       Â
       Â
startHotspotBtn = findViewById(R.id.idBtnHotspot)
       Â
statusTV = findViewById(R.id.idTVHotspotStatue)
Â
Â
       Â
       Â
startHotspotBtn.setOnClickListener {
           Â
           Â
checkPermissions()
       Â
}
   Â
}
Â
Â
   Â
@SuppressLint
(
"InlinedApi"
)
   Â
personal
enjoyable checkPermissions() {
       Â
if
(Construct.VERSION.SDK_INT >= Construct.VERSION_CODES.M) {
           Â
           Â
val permission: String = android.Manifest.permission.NEARBY_WIFI_DEVICES
           Â
when {
               Â
               Â
ContextCompat.checkSelfPermission(
                   Â
this
, permission,
               Â
) == PackageManager.PERMISSION_GRANTED -> {
                   Â
                   Â
startHotSpot()
               Â
}
               Â
               Â
               Â
shouldShowRequestPermissionRationale(permission) -> {
                   Â
MaterialAlertDialogBuilder(
this
).setMessage(
"This app wouldn't work with out Close by Wi-Fi Units permission. Do you wish to give this app the permission?"
)
                       Â
.setPositiveButton(
"Sure"
) { _, _ ->
                           Â
permissionLauncher.launch(permission)
                       Â
}.setNegativeButton(
"No Thanks"
) { _, _ ->
Â
Â
                       Â
}.present()
               Â
}
               Â
else
-> {
                   Â
                   Â
permissionLauncher.launch(permission)
               Â
}
           Â
}
       Â
}
else
{
           Â
           Â
Toast.makeText(
               Â
this
,
               Â
"Please use Android 13 gadget."
,
               Â
Toast.LENGTH_SHORT,
           Â
).present()
       Â
}
   Â
}
Â
Â
   Â
@SuppressLint
(
"NewApi"
)
   Â
personal
enjoyable startHotSpot() {
       Â
       Â
wifiManager.startLocalOnlyHotspot(
           Â
object : WifiManager.LocalOnlyHotspotCallback() {
               Â
override enjoyable onStarted(reservation: WifiManager.LocalOnlyHotspotReservation?) {
                   Â
tremendous
.onStarted(reservation)
                   Â
                   Â
                   Â
startHotspotBtn.isEnabled =
false
                   Â
statusTV.textual content =
"Standing Native Solely Hotspot: STARTED"
               Â
}
Â
Â
               Â
override enjoyable onFailed(purpose: Int) {
                   Â
                   Â
tremendous
.onFailed(purpose)
                   Â
                   Â
Toast.makeText(
                       Â
this
@MainActivity
,
                       Â
"Error Native Solely Hotspot: $purpose"
,
                       Â
Toast.LENGTH_SHORT,
                   Â
).present()
               Â
}
Â
Â
               Â
override enjoyable onStopped() {
                   Â
                   Â
tremendous
.onStopped()
                   Â
startHotspotBtn.isEnabled =
true
                   Â
statusTV.textual content =
"Standing Native Solely Hotspot: STOPPED"
               Â
}
           Â
},
           Â
null
,
       Â
)
   Â
}
}