问题描述
由于 Intent 重定向,我们收到了应用被拒绝的通知,为了适应我们在代码中应用了一些检查但今天应用仍然被拒绝的通知。您能否阅读以下有关应用要求的详细信息以及为适应错误/警告所做的更改。
应用简介: 我们的应用程序使用 TWA(PWA Wrapper)和原生 Android 代码的组合,其中身份验证主要发生在原生代码中,然后成功登录用户将使用 TWA Launcher 活动重定向到 PWA。为了从 TWA 返回到本机代码,我们正在使用 Intent 过滤器。 我们查看了电子邮件中“意图重定向”(here) 下提供的选项,但是 3 三个中没有一个完全适合我们的情况,即从 TWA Launcher Web URL 到同一范围内的 Native android 活动应用。虽然我们添加了一些额外的检查,如下面的代码片段所示,从网页到原生代码(由 Depplink 调用:
if (intent.`package` == null || !intent.`package`.equals(packageName)) {
finish()
}else {
//Business logic
// Open new activity from here
}
以下详细信息来自 Google Play 控制台门户。
发布前报告详情
意图重定向
Errorbrightness_1Security
您的应用包含意图重定向漏洞。 Please see this Google Help Centre article for details。
• androidx.activity.ComponentActivity.startActivityForResult
还有一个地方我们使用了 startActivityForResult,它现在已被弃用,我们将其替换为新的 API(即 registerForActivityResult)。请参考下面的代码片段:
//代码片段
旧代码:
val intent = Intent(this,TwaimplicationActivity::class.java)
startActivityForResult(intent,AppConstants.RequestCode.TWA_IMPLICATION)
新变化:
twaActivityStartForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if(result.resultCode == Activity.RESULT_OK){
if(viewmodel.showEnrolment.get()!!){
navigatetoEnrolment()
} else {
navigatetoLogin()
}
}
}
val intent = Intent(this,TwaimplicationActivity::class.java)
twaActivityStartForResult?.launch(intent)
如果有的话,我错过了。请告诉我们正确的地方,我在我们的应用程序中错过了安全检查?
解决方法
我认为你的 startActivityForResult 是问题,上次我也遇到了这个问题,所以我的建议是将 startActivityForResult 更改为 startActivity(this,TwaImplicationActivity::class.java)