переопределить веселье onRequestPermissionsResult для другого класса - PullRequest
0 голосов
/ 07 мая 2018

Я пишу Разрешение класс, здесь есть метод askMicrophonePermission .

В askMicrophonePermission , я использую ActivityCompat.requestPermissions функция.

Но я не могу переопределить onRequestPermissionsResult в Разрешение класс.

Если я хочу переопределить onRequestPermissionsResult в Разрешение , а не в MainActivity .

Как написать ??Вот мой код.

MainActivity:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        Permission().askMicrophonePermission(this@MainActivity)
    }
}

Разрешение:

class Permission{
    private val tag = "Permission message"
    private val userMicrophonePermissionAgreeCode = 1

    fun askMicrophonePermission(context: Context){

        val currentMicrophonePermission = ActivityCompat.checkSelfPermission(context,android.Manifest.permission.RECORD_AUDIO)


        if(currentMicrophonePermission != PackageManager.PERMISSION_GRANTED)
            ActivityCompat.requestPermissions(context as Activity, arrayOf(android.Manifest.permission.RECORD_AUDIO), userMicrophonePermissionAgreeCode)
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        when(requestCode){
            userMicrophonePermissionAgreeCode -> {
                if( grantResults[0] == PackageManager.PERMISSION_GRANTED )
                    Log.i(tag,"Agree microphone permission")
                else
                    Log.i(tag,"Not agree microphone permission")
            }
        }
    }
}

1 Ответ

0 голосов
/ 07 мая 2018

onRequestPermissionsResult - это метод из FragmentActivity. Поскольку ваш Permission не расширяет FragmentActivity, вы не можете переопределить onRequestPermissionsResult непосредственно в Permission.

Вы можете делегировать результаты разрешений на Permission.

class MainActivity : AppCompatActivity() {

    private lateinit var permission: Permission

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        permission = Permission()
        permission.askMicrophonePermission(this@MainActivity)
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        permission.handlePermissionsResult(resquestCode, permissions, grantResults)
    }
}

Разрешение:

class Permission{
    private val tag = "Permission message"
    private val userMicrophonePermissionAgreeCode = 1

    fun askMicrophonePermission(context: Context){

        val currentMicrophonePermission = ActivityCompat.checkSelfPermission(context,android.Manifest.permission.RECORD_AUDIO)


        if(currentMicrophonePermission != PackageManager.PERMISSION_GRANTED)
            ActivityCompat.requestPermissions(context as Activity, arrayOf(android.Manifest.permission.RECORD_AUDIO), userMicrophonePermissionAgreeCode)
    }

    fun handlePermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        when(requestCode){
            userMicrophonePermissionAgreeCode -> {
                if( grantResults[0] == PackageManager.PERMISSION_GRANTED )
                    Log.i(tag,"Agree microphone permission")
                else
                    Log.i(tag,"Not agree microphone permission")
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...