操作:“android.settings.SECURITY_SETTINGS”在 Samsung Android 12 上抛出 ActivityNotFoundException

Nik*_*sov 5 android intentfilter android-intent android-activity samsung-mobile

我打算打开 BiometricsAndSecuritySettingsActivity:

Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在搭载 Android 12 的三星 A52 上,我得到了ActivityNotFoundException

我尝试通过 PackageManager 查看意图过滤器:

val packageManager = context.packageManager
packageManager.getPackageInfo("com.android.settings", PackageManager.GET_INTENT_FILTERS)
Run Code Online (Sandbox Code Playgroud)

但我没有看到任何有关意图过滤器的信息。可能是由错误引起的,如下所示:https ://issuetracker.google.com/issues/36908355

我继续尝试通过 adb 查找意图过滤器。我用过adb shell dumpsys package com.android.settings. 我已将结果导出到文件并发现以下行:

android.settings.SECURITY_SETTINGS:
d32d8d9 com.android.settings/.Settings$BiometricsAndSecuritySettingsActivity filter d8ea29e
          Action: "android.settings.SECURITY_SETTINGS"
          Category: "sec.voice.category.DEFAULT"
          Category: "android.intent.category.DEFAULT"
          mPriority=1, mOrder=0, mHasStaticPartialTypes=false, mHasDynamicPartialTypes=false
Run Code Online (Sandbox Code Playgroud)

我在 Android 9 上获得的信息相同

但是,这就是两者之间的区别。在 Android 9 上我有这个:

b99cc29 com.android.settings/.Settings$BiometricsAndSecuritySettingsActivity filter  android.settings.SECURITY_SETTINGS:
          Action: "com.android.settings.action.SETTINGS"
          mPriority=1400, mOrder=0, mHasPartialTypes=false
Run Code Online (Sandbox Code Playgroud)

但 Android 12 中的 dumpsys 没有:

d32d8d9 com.android.settings/.Settings$BiometricsAndSecuritySettingsActivity filter f7b917f
          Action: "android.intent.action.MAIN"
          Category: "android.intent.category.DEFAULT"
Run Code Online (Sandbox Code Playgroud)

那么,您对如何将用户直接重定向到 BiometricsAndSecuritySettingsActivity 有什么想法吗?不是通过使用android.settings.SETTINGS