有没有一种特定的方法可以禁用主页键?(与修改原生应用程序有关)

3
我刚刚在搜索相关内容,大多数人都说除非将您的应用程序作为备用启动器,否则不可能禁用主页键。我很好奇三星等公司是否有一些特殊方法可以禁用它。
例如,我有一部三星Infuse手机,当我打开相机应用并按下电源键时,它会锁定所有硬件按钮。主页键、返回键,所有按钮都被锁定。在锁定后按下这些键,它们根本不起作用。您可以再次按电源按钮解锁它们,以后随时可以重新锁定。
我很好奇是什么原因使他们能够锁定/禁用主页键?根据我的搜索结果,除非使用您的应用程序作为备用启动器,否则无法禁用它,但显然三星(或谷歌?我不确定这是否是三星/TouchWiz应用程序还是股票Android应用程序)可以在其相机应用程序中禁用它而不使该应用程序充当启动器。
我正试图修改我的手机上的相机应用程序,以使用电源按钮拍照。我使用apk管理器反编译了该应用程序并修改了Camera.smali以使用电源按钮拍照,但它仍然锁定主页键和其他所有键。我尝试在其中搜索任何与锁定任何按钮相关的内容,但我找不到任何东西。

你是否好奇找到了一种可靠的方法来检测/拦截电源按钮(我假设你指的是开/关按钮,人们称呼不同)? - Idistic
2个回答

3

三星这样的公司会修改原始平台来做各种可疑的事情。 :) 原生Android不允许应用程序禁用主页键。希望无论制造商进行了怎样的修改,他们只允许内置应用程序禁用主页键。对于第三方应用程序有能力这样做是一个重大的行为和可能的安全问题。


0

有一种方法可以使用(有时),但它并不是100%可靠的,因此除非您可以约束/测试硬件并且这也可能产生意外后果,否则我不会依赖它用于关键应用程序。

例如,据报道,在三星设备上,该方法导致设备带出锁定屏幕,因此如果您尝试此操作,请告诉我是否获得任何类似的结果,它什么都不做或者有效果:-)

我可以说,我已经测试过所有具有硬主页按钮的HTC手机(大约6个)上的Android 2.2 / 2.3上运行,没有检查任何其他OS / Phone组合。

无论如何,在您的活动中...

@Override 
public void onAttachedToWindow()
{
    getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
}

是的,似乎很琐碎,实际上它只是在说“嘿,我是一个键盘保护应用程序,所以忽略主页键”,不同的手机行为不同。

关于“应该”与“能够”的冗长说明

如果主页键停止工作并且用户想要使用它,一些用户会非常生气。我发现使用这个的唯一有效理由是在为一个机构建立的数据采集应用程序上,他们不希望意外停止(应用程序被推到后面)当他们在使用它。

我意识到有些人从用户体验角度认为根本不应该允许这样做(我忽略了安全问题,如果你是一个像样的恶意软件作者,有更好的方法来搞砸用户而不会引起他们的注意)。

虽然我倾向于认为对于大多数应用程序来说,这将非常让人讨厌,但在某些情况下,如上所述,这将是有益的。最终,设计师和他们的用户将通过不支付或再也不使用它来决定什么是正确和错误的。

就我个人而言,我认为谷歌应该重新考虑这个主页键的问题,即使手机设计师(如帖子所述)也在找到控制所有键时有益而不是“邪恶”或不好的用户体验的时候。

它会被滥用吗?当然会,但是市场力量会解决这个问题,相信我。

如果谷歌仍然觉得有必要,将其变成一个让人不安的顶级权限也会施加适当的压力。

好了,发泄结束...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接