我正在研究Locker类的应用程序。我的要求是在用户启动特定应用程序时打开一个密码屏幕(由用户先前在我的应用程序中选择)。我向用户显示所有应用程序的列表,并带有“切换”按钮来锁定/解锁。我将用户的首选项保存在本地sqlite数据库中。
主要问题是如何在用户启动其中一个应用程序时得到通知。
我已经浏览过this,this,this,this和许多其他模糊的帖子。
所以现在,我们需要所有这三种权限的系统特权:
<uses-permission android:name="android.permission.GET_TOP_ACTIVITY_INFO"/>
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_LOGS"/>
我无法使我的应用程序系统成为应用程序。它应表现为普通用户应用程序。因此该选项没有用。
问题是:如果没有根设备/系统特权应用程序,还有其他选择吗?如果是这样,请向我提供一些我可以遵循的准则。
答案 0 :(得分:0)
应该可以使用AccessibilityService
的功能来构建类似的东西。您必须将自己的应用注册为AccessibilityService
,然后会收到所有事件的通知。您可以对“窗口内容已更改”或“窗口状态已更改”事件做出反应,然后查询Android框架以获取有关哪个窗口已更改以及该窗口属于哪个应用程序的信息,并做出相应的反应。要使它完成您想要的工作,这可能是很多工作,而且可能是反复试验的工作。