如何从对话框片段内的按钮请求 onClick 事件中的权限
How to ask for permissions in an onClick event from a button inside a dialog fragment
一旦我的应用程序第一次打开,就会出现一个对话框片段(在 MainActivity
中),解释为什么需要一些权限,并且有一个 接受按钮在最后。我已经为此按钮设置了一个 onClick 侦听器,我想在其中显示默认弹出窗口以请求权限。为此,我需要 ActivityCompat.requestPermission()
函数,它需要 activity 应该打开的位置。我尝试了几种方法,例如 MainActivity()
、this@MainActivity
或 this@WelcomeDialogFragment
等,但其中 none 有效。
有办法吗? (按下按钮后,对话框立即关闭。)这是我的 WelcomeDialogFragment class:
class WelcomeDialogFragment : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val rootView : View = inflater.inflate(R.layout.welcome_popup, container, false)
rootView.accept_btn.setOnClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ActivityCompat.requestPermissions(
this@MainActivity, arrayOf(
Manifest.permission.ACCESS_BACKGROUND_LOCATION
), PackageManager.PERMISSION_GRANTED)
}
ActivityCompat.requestPermissions(
this@MainActivity, arrayOf(
Manifest.permission.SEND_SMS, Manifest.permission.READ_CONTACTS
), PackageManager.PERMISSION_GRANTED)
dismiss()
}
return rootView
}
}
谢谢。
您可以使用 getActivity()
或 requireActivity()
,如:
ActivityCompat.requestPermissions(requireActivity(), list_of_permissions)
一旦我的应用程序第一次打开,就会出现一个对话框片段(在 MainActivity
中),解释为什么需要一些权限,并且有一个 接受按钮在最后。我已经为此按钮设置了一个 onClick 侦听器,我想在其中显示默认弹出窗口以请求权限。为此,我需要 ActivityCompat.requestPermission()
函数,它需要 activity 应该打开的位置。我尝试了几种方法,例如 MainActivity()
、this@MainActivity
或 this@WelcomeDialogFragment
等,但其中 none 有效。
有办法吗? (按下按钮后,对话框立即关闭。)这是我的 WelcomeDialogFragment class:
class WelcomeDialogFragment : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val rootView : View = inflater.inflate(R.layout.welcome_popup, container, false)
rootView.accept_btn.setOnClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ActivityCompat.requestPermissions(
this@MainActivity, arrayOf(
Manifest.permission.ACCESS_BACKGROUND_LOCATION
), PackageManager.PERMISSION_GRANTED)
}
ActivityCompat.requestPermissions(
this@MainActivity, arrayOf(
Manifest.permission.SEND_SMS, Manifest.permission.READ_CONTACTS
), PackageManager.PERMISSION_GRANTED)
dismiss()
}
return rootView
}
}
谢谢。
您可以使用 getActivity()
或 requireActivity()
,如:
ActivityCompat.requestPermissions(requireActivity(), list_of_permissions)