Android 密码管理器应用程序如何工作?
How Android Password manager App works?
我在 android 中很少看到像 lastpass 这样的密码管理器应用程序。
我也在尝试构建这种应用程序。
这些应用程序如何工作?
他们如何访问第三方应用程序的 EditText 和 PasswordField?
他们如何检测登录屏幕?
这个应用程序使用 Android 系统 api 吗?
请给我提示。这是怎么回事?
更新
我在网上找到了一个有用的 resource。但是它没有说明使用哪个api!
经过大量搜索,我得到了解决方案。可以使用 accessibility api 访问第三方应用程序的 EditText 和 PasswordField 我们可以使用 AccessibilityNodeInfo
和 AccessibilityNodeInfo.ACTION_SET_TEXT
设置和获取 edittext 和密码字段的值。我用这个 api 完成了这件事。检测哪个应用在屏幕上 运行。您必须将此行 android:packageNames="com.example"
放入您的 accessibility.xml
文件中。
其中 com.example
是您要为其触发无障碍服务的应用程序包名称。
请从 android.developer 站点阅读与无障碍服务相关的文档。
示例 accessibility.xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeViewFocused|typeViewClicked"
android:packageNames="com.example"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:canRequestEnhancedWebAccessibility="true"/>
我在 android 中很少看到像 lastpass 这样的密码管理器应用程序。 我也在尝试构建这种应用程序。
这些应用程序如何工作?
他们如何访问第三方应用程序的 EditText 和 PasswordField?
他们如何检测登录屏幕?
这个应用程序使用 Android 系统 api 吗?
请给我提示。这是怎么回事?
更新
我在网上找到了一个有用的 resource。但是它没有说明使用哪个api!
经过大量搜索,我得到了解决方案。可以使用 accessibility api 访问第三方应用程序的 EditText 和 PasswordField 我们可以使用 AccessibilityNodeInfo
和 AccessibilityNodeInfo.ACTION_SET_TEXT
设置和获取 edittext 和密码字段的值。我用这个 api 完成了这件事。检测哪个应用在屏幕上 运行。您必须将此行 android:packageNames="com.example"
放入您的 accessibility.xml
文件中。
其中 com.example
是您要为其触发无障碍服务的应用程序包名称。
请从 android.developer 站点阅读与无障碍服务相关的文档。
示例 accessibility.xml
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeViewFocused|typeViewClicked"
android:packageNames="com.example"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:canRequestEnhancedWebAccessibility="true"/>