我最近迁移到了注册请求权限的最新回调机制,但是注册请求回调的最新api从未被触发过。我附上了代码片段,有人能帮我找出哪里出了问题吗?
@AndroidEntryPoint
class ManageTeamFragment : Fragment(), View.OnClickListener {
@Inject
lateinit var manageTeamViewModel: ManageTeamViewModel
private var requestMultiplePermissions:ActivityResultLauncher<Array<out String>>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestMultiplePermissions =
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
println("DEBUG $it")
if (allPermissionsGranted()) {
btnAddUser.showLoading(true)
btnAddUser.postDelayed({
(activity as? DashboardActivity)?.navToFragment(AddUserFragment(), true)
}, 10)
} else {
if (addOrEditUserBottomSheet == null) {
addOrEditUserBottomSheet =
AddOrEditUserBottomSheet(toolbar.context, addOrEditUserInteractionsListener)
}
addOrEditUserBottomSheet?.showBottomSheet()
}
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_manage_team, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initViews()
initViewModels()
// Inflate the layout for this fragment
btnAddUser.setOnClickListener {
println("DEBUG requesting")
requestMultiplePermissions?.launch(REQUIRED_PERMISSIONS)
}
}
}gradle依赖关系
implementation 'androidx.activity:activity-ktx:1.2.0-alpha05'
implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha05'发布于 2021-08-17 07:48:37
只需像这样请求一个权限即可。
private val requestMultiplePermissions =
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
println("DEBUG $it")
if (allPermissionsGranted()) {
btnAddUser.showLoading(true)
btnAddUser.postDelayed({
(activity as? DashboardActivity)?.navToFragment(AddUserFragment(), true)
}, 10)
} else {
if (addOrEditUserBottomSheet == null) {
addOrEditUserBottomSheet =
AddOrEditUserBottomSheet(toolbar.context, addOrEditUserInteractionsListener)
}
addOrEditUserBottomSheet?.showBottomSheet()
}
}然后尝试在onCreateView方法中启动请求,并将所需的权限作为字符串传递。
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
//launch permission request here and pass the permission
requestMultiplePermissions.launch(Manifest.permission.READ_CONTACTS)
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_manage_team, container, false)
}https://stackoverflow.com/questions/68812924
复制相似问题