问题标签 [registerforactivityresult]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - registerForActivityResult TakePicture 未触发
我尝试使用新的 registerForActivityResult 拍照。我可以打开相机意图,但拍照后,没有触发回调,我看不到任何关于活动结果或 logcat 错误的信息。
我也试过RequestPermission,它被触发了。没找到,怎么回事
我的代码在这里:
ViewModel 上的 createImageFile 函数:
应用分级:
android - 后按后如何返回调用 registerForActivityResult 的片段
当我打电话mPickFromGalleryLauncher.launch(PICK_FROM_GALLERY_INPUT)画廊打开。如果在图库中我按后退按钮应用程序已关闭。
如何从画廊返回 Fragment?应用程序使用带有 Android 导航组件的 SingleActivity 模式。
我的片段:
android-fragments - 更新到 androidx.fragment:fragment:1.3.0-alpha08:在 onCreate 之后不再允许 registerForActivityResult。onCreate后如何使用?
最初的问题(18/05/2020):
所以有了最新的更新
- androidx.fragment:fragment:1.3.0- alpha07
至
- androidx.fragment:fragment:1.3.0- alpha08
我得到错误:
FragmentXY 在创建后尝试注册ForActivityResult。片段必须在创建之前调用 registerForActivityResult()(即初始化、onAttach() 或 onCreate())。
在向用户显示有关这些权限的使用以及为什么需要这些权限的信息之后,我曾经在我的 StartFragment(单活动应用程序,onViewCreated 中)中检查权限。在过去的 3(?)个月里,一切都运行良好。
我在更改日志中看到:
行为改变
[...]
在 onCreate() 之后调用 registerForActivityResult() 现在会抛出一个异常,表明这是不允许的,而不是在配置更改后静默地失败交付结果。(b/162255449) "
我暂时降级回 1.3.0-alpha07 版本。
但是,如果我在创建视图后需要在 Fragments 中使用registerForActivityResult (例如权限),那么在升级到 1.3.0-alpha08 版本时我该怎么做?
文档声明我应该在我的 Fragment 的 onCreate 中使用 launch() (见下文),但这意味着我必须在创建视图之前这样做,这与我的应用程序流程相矛盾。
行为改变
[...]
您现在可以在片段的 onCreate() 生命周期方法中对 ActivityResultLauncher 调用 launch()。(b/161464278) "
由于这种行为似乎是开发人员有意为之,它不是错误或其他任何东西,但我如何在 onCreate 之后继续使用 ActivityResults?有任何想法吗?
编辑(2020 年 5 月 19 日):
感谢@A.Andriyishyna,我明白注册(在 onCreate 中)和执行(在需要时,例如在 onViewCreated 中)必须单独处理。问题是我在其他文件中有方便的内联函数(感谢 Flywith24),这有助于我将权限 BL 与视图(片段)分开。
有没有办法保留这些内联函数而不必彻底改变它们?
- 分段
- 许可DSL
- 权限扩展
android - 通过 Activity Results API 启用自动填充服务
我正在尝试注册一个ActivityResultContract使用android.provider.Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICEkotlin 和 AndroidX:
但是,当我尝试使用它时:
我得到IllegalArgumentException: Can only use lower 16 bits for requestCode,我认为这是由内部startActivityForResult()调用触发的。
我以前没有使用过自定义ActivityResultContract,虽然它看起来很简单,但对我来说也有点粗略——我不确定是否将输入视为无关紧要 ( Any?) 是要走的路,但它似乎与此无关case (第一个版本用作Intent输入类型,但似乎没有意义,问题“只能使用低 16 位......”是相同的)。
我正在使用androidx.activity:activity-ktx:1.2.0-alpha08.
android - Jetpack Compose:从 Composable 函数启动 ActivityResultContract 请求
从1.2.0 -beta01开始,androidx.activity:activity-ktx无法再launch使用.Activity.registerForActivityResult()
应用程序现在应该如何通过@Composable函数启动这个请求?以前,应用程序可以通过MainActivity使用传递链的实例,Ambient然后轻松启动请求。
可以通过以下方式解决新行为,例如,在 ActivityonCreate函数外部实例化后,将注册 Activity 结果的类沿链传递,然后在Composable. 但是,无法通过这种方式注册要在完成后执行的回调。
可以通过创建 custom 来解决这个问题ActivityResultContract,它在启动时会进行回调。但是,这意味着几乎所有内置程序ActivityResultContracts都不能与 Jetpack Compose 一起使用。
TL;博士
应用程序如何ActivityResultsContract从@Composable函数启动请求?
android - 使用新的活动结果 API 登录 Facebook Sdk
由于 Facebook SDK 本身启动了 Facebook 登录活动,因此我无法使用活动结果 API 回调结果。当我尝试写合同时,我不知道我应该提供什么作为意图。我最终通过合同打开了一个空白活动,并在该活动被破坏时返回结果。总之,我不知道如何使用新的 Activity Result API 调用下面的语句。有什么想法吗?我还检查了是否有来自 facebook API 的更新,但没有运气。
android - 致命错误 LifecycleOwners 必须在 registerForActivityResult 开始之前调用 register
我有一个简单的空活动来检查是否需要请求权限。当registerForActivityResult被调用时,它会因错误而崩溃java.lang.IllegalStateException: LifecycleOwner com.example.app.PermsRequester@41a30da is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.根据我的研究,我认为我需要检查是否savedInstanceState是null,如果是,则创建一个新的fragment?我不确定这是否是正确的解决方案或如何实施。下面是代码:
android - 使用 FileProvider 和 ActivityResultContracts.TakePicture() 的问题
您好我正在尝试使用新的AndroidX Activity Result APIs,尤其是ActivityResultContracts.TakePicture()合同。在放入我的真实应用程序之前,我创建了一个示例项目进行测试。
主要活动
我想要实现的是:如果未创建,则创建一个名为picturesinside的文件夹以PACKAGE_NAME-> files保存个人资料图片,并使用新的 ActivityResultApi 将拍摄的照片保存在此文件夹中。
AndroidManifest.xml
@xml/file_paths文件是:
问题是我收到错误:
我需要一些帮助来解决这个问题。提前致谢!!

