问题标签 [activity-result-api]
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 - 为什么 onActivityResult(int, int, Bundle) 传递的数据不是类型安全的或者为什么 Activity Result API 使调用活动的结果类型安全?
Jetpack提供了一个新的解决方案,即Activity Result API,分别用于弃用startActivityForResult
和onActivityResult
用于Activity
/Fragment
传递数据。
原因之一是Activity Result API makes calling an activity for result type-safe.
我很困惑。startActivityForResult()
and onActivityResult()
of Activity
/Fragment
已经用了很长时间了。关于代码耦合、请求和响应分离等缺点,我知道。
但是,onActivityResult()
非类型安全的数据如何传递?
android - 在 ActivityResultContract 中获取请求代码的默认方式
是否有任何默认方式来获取请求代码ActivityResultContract
?
我知道StartActivityForResult
合同,它返回ActivityResult
,但没有requestCode
,只有resultCode
。
我可以做这样的事情,但也许有更好的解决方案:
android - Activity 结果 API 的 ActivityResultLauncher launch() 方法不仅会调用合约的 createIntent() 方法,还会调用 parseResult()
我在 ActivityA 上,尝试使用字符串输入启动 ActivityB,进行一些工作,然后将字符串输出返回给 ActivityA。我根据本教程和ActivityResultContract
(都在下面列出)创建了 Activity Result API 帮助程序类。我在 ActivityA 的 onCreate() 方法中注册活动结果:
问题是当我调用linkLauncher.execute()
方法时,该方法又调用ActivityResultLauncher
'slaunch() 方法,这两个合约方法都在 ActivityB 启动之前被调用。
这是我尝试将结果从 ActivityB 返回到 ActiviteA 的方式:
提到的类的列表。
助手类:
这是我的ActivityResultContract
:
android-intent - 从图库中选择图像时,将 Intent setAction 添加到新的 Activity Result API ActivityResultLauncher
我正在使用新的 Activity Result API 来启动和从 Gallery 中选择图像,我遇到的问题是如何修改新 Activity Result API 中的 Intent 以像旧的 startActivityForResult 一样工作
下面是我从画廊中选择东西的旧方法
然后下面是我使用 onActivityResult 获取结果的旧方法
下面是我使用新的 Activity Result API 启动相机的新方法
并使用 ActivityResultLauncher 获得以下结果
我的问题是如何将某些内容解析为启动方法或将操作设置为意图示例
对此
xamarin - 在 Xamarin.Android 中使用活动结果 API
似乎它没有得到适当的支持,因为我在尝试实现IActivityResultCallback
接口时需要实现 JNI 的东西。也不ActivityResultContract
是泛型类,因此当我继承它以创建自定义合同时,它不像原生 Android 那样是类型安全的。所以我猜它现在根本不可用?
android-studio - 如何从活动结果 API 获取 requestCode
我对 Android Kotlin 编程非常陌生。我正在制作一个使用存储访问框架创建、读取和删除文件的应用程序。我通过实现已弃用的 startActivityForResult 意图来执行文件读取、创建、删除任务来做到这一点。我尝试使用 Activity Result API 来实现它,但我陷入了找不到它的请求代码中。在新的实现中,有 resultCode 但没有 requestCode。
我的实现如下。如何使用 Activity Result API 实现以下功能?
如何从 Activity Result API 获取请求代码?
由于不推荐使用上述方法,因此我尝试使用 Intent 启动器来实现它,但是任何地方都没有对 requestCode 的引用,所以我被困在这里。如下图所示:
谁能告诉我它是如何正确完成的?
android - 活动结果 API(TakePicture() 相机):传递结果 ResultInfo 失败(应用程序崩溃)
我一直在努力解决在使用相机应用程序拍照时有时会破坏我的活动的问题,导致以下错误和应用程序崩溃。
我已经按照 Google 文档了解如何在此处使用相机拍照。经过 3 或 4 次试验,它仍然产生上述错误。
我放弃了startActivityForResult
新的旧方法Activity Result APIs
,但仍然存在同样的问题。
此处的文档具体说明了以下内容:
在为结果启动活动时,有可能(并且,在内存密集型操作的情况下,例如使用相机,几乎可以肯定)您的进程和活动将由于内存不足而被破坏。
出于这个原因,活动结果 API 将结果回调与代码中您启动其他活动的位置分离。由于重新创建流程和活动时结果回调需要可用,因此每次创建活动时都必须无条件注册回调,即使启动其他活动的逻辑仅基于用户输入或其他业务逻辑发生。
因此,它指出即使活动被销毁,新的活动结果 API 也会以某种方式处理这个问题。
这是我现在使用的代码:
将活动添加android:configChanges="orientation|screenSize"
或修复到肖像没有帮助。
对此有适当的解决方法吗?
完整的堆栈跟踪:
kotlin - 如何将 registerForActivityResult 与 StartIntentSenderForResult 合同一起使用?
我正在编写一个 Kotlin 应用程序并使用 Firebase 进行身份验证。正如onActivityResult
现在已经过时的那样,我正在尝试将我的应用程序迁移到使用registerForActivityResult
. 我有一个指向 Google 帐户功能的链接,它以 Google 登录流程开始,如此处所示。我的代码:
initGoogleSignInClient
在片段中调用where onCreateView
,showLinkWithGoogle
当用户点击屏幕上的按钮时调用。这完美地工作。我使用 查找了一个示例,我找到的最好的示例在此页面registerForActivityResult
的底部。我添加了这段代码:
但意识到IntentSenderRequest.Builder
需要一个IntentSender
而不是一个Intent
. 我还没有找到任何关于如何IntentSender
从. 谁能提供一个完整的使用示例?Intent
GoogleSignInClient
registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult())
非常感谢!
android - Android在使用Activity Result API时从父Activity完成子Activity
我找不到使用新的活动结果 API 从父活动完成子活动的方法。
以前我们可以做startActivityForResult(intent, childId)
然后finishActivity(childId)
从父 Activity 调用来完成子 Activity。
但是当activityResultLauncher.launch(childIntent)
我们不能通过请求码childId,所以我们不能使用finishActivity(childId)
是否可以使用 Activity Result API 从父活动完成子活动?
谢谢
这是一个说明问题的示例项目。https://github.com/4brunu/ActivityResultAPIFinishChildActivity
android - 如何在android 11中使用android ResultLauncher复制文件并获取Uri(具有读取权限)
试图在Android API的帮助下从内部存储中获取文件(PDF)以上传到服务器上ResultLauncher
,得到Uri,但我无法读取该Uri。当尝试在结果 Uri 的帮助下将该文件复制到我的应用程序的范围目录时,在contentResolver.openInputStream(uri)
. 这是错误:
如何在应用程序的范围目录中复制文件?这是我的 ResultLauncher:
这就是我的启动方式:
这是应用程序中的方法正在崩溃:
使用提供者路径: