ice*_*rit 6 android android-fragments android-jetpack
我最近迁移到最新的回调机制来注册请求权限,但是用于注册请求回调的最新 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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
梯度依赖
implementation 'androidx.activity:activity-ktx:1.2.0-alpha05'
implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha05'
Run Code Online (Sandbox Code Playgroud)
Fan*_*dez -1
只需尝试请求这样的一项许可即可。
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()
}
}
Run Code Online (Sandbox Code Playgroud)
然后尝试在方法内启动请求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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2165 次 |
| 最近记录: |