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?