Android 8 在 ionic 应用程序启动时挂接到权限弹出窗口 allow/deny 事件

Android 8 hooking into permissions popup allow/deny event when ionic app launches

当我们的 ionic 1.x 应用程序在 android 8(targetSdkVersion:26,Samsung S8 设备)上启动时,它会显示权限弹出窗口

Allow app to access photos, media and files on your device? Deny Allow

弹出窗口在我们的任何应用程序代码运行之前显示,因此我们怀疑这是由于 AndroidManifest.xml 文件中提到的权限所致。

我们也使用指纹登录插件,当权限弹出窗口和指纹登录提示重叠时,指纹登录停止工作(提示保持打开状态,不让用户登录)

在 Ionic 1.x 应用程序中,是否可以挂钩权限 allowed/denied 事件,以便我们可以将指纹延迟到用户 allow/denies 权限之后?

或者关于如何解决此问题的任何其他想法?

谢谢。

您描述的弹出窗口是本机 Android 运行时权限对话框,在运行时请求权限时显示。由于清单中存在 <uses-permission> 元素,此对话框不会自动显示(尽管必须存在相关清单条目才能在运行时请求权限)。所以显示这个对话框是因为项目中的一个插件(我不能确切地说出是哪个,因为你没有明确列出你的插件)正在运行时请求应用程序启动时的权限(这不是好的做法)。

由于对话框是本机的,如果不修改发出运行时请求的本机插件,您就无法 "hook into it"。我的建议是分叉该插件并注释掉在您的分叉插件版本中启动时发出的本机权限请求。

然后您可以在您的分叉插件中公开该权限请求作为插件 API 方法(如果您知道如何创建 Cordova 插件)或者您可以使用第 3 方插件,例如 cordova-diagnostic-plugin or cordova-plugin-android-permissions 在运行时请求相关权限。这将允许您仅在准备好时请求权限(即显示对话框)。