¿Cómo usar el permiso de acceso a Wi-Fi cercano en Android 13?


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.structure.activity_main)

 

        

        permissionLauncher = registerForActivityResult(

            

            ActivityResultContracts.RequestPermission()

        ) { isGranted: Boolean ->

            if (isGranted) {

                

                startHotSpot()

            } else {

                

                Toast.makeText(

                    this,

                    "Please enable the Close by Wi-Fi Gadgets 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 Gadgets 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(motive: Int) {

                    

                    tremendous.onFailed(motive)

                    

                    Toast.makeText(

                        this@MainActivity,

                        "Error Native Solely Hotspot: $motive",

                        Toast.LENGTH_SHORT,

                    ).present()

                }

 

                override enjoyable onStopped() {

                    

                    tremendous.onStopped()

                    startHotspotBtn.isEnabled = true

                    statusTV.textual content = "Standing Native Solely Hotspot: STOPPED"

                }

            },

            null,

        )

    }

}

Related Articles

Cómo cambiar la configuración de idioma en Pixel 3/3xl (Android)

15 de septiembre de 2020 Por: Denica Masby Este artículo es...

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Same Category

spot_img

Stay in touch!

Follow our Instagram