我需要获取android锁定屏幕 Activity 的程序包名称。我已经用谷歌搜索找到了除https://stackoverflow.com/a/16881064/2803557之外什么都没用的东西。

有什么办法可以获取锁屏包名称

最佳答案

您可以通过分析Android日志来确定出现在前台的任何Activity的程序包名称。例如,如果您打开了Google Maps,则单击设备的“主页”按钮将在日志中显示此信息(我通常按ActivityManager字符串进行过滤)。

START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME]
flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher}

这表明您主屏幕Activity的软件包名称是com.android.launcher
但是,当我单击Nexus 4主页按钮以显示任何应用程序的锁屏时,它永远不会显示正在启动的另一个 Activity 。这使我认为这不是我们理解为典型的Activity的东西。

如果查看Android源代码KeyguardViewMediator.java的源代码,则会发现一个名为private void doKeyguardLocked(Bundle options)的方法。我从经验中知道,更改源以从此方法立即返回将禁用锁屏。 KeyguardViewMediator.java的源显示它在软件包com.android.keyguard中,并且我相信这是您正在寻找的软件包。

至于动态获取程序包名称,对我来说似乎是不可能的。但是,如果您已经提前知道软件包名称,则无需动态获取它。

我希望这有帮助。

10-08 16:48