[英]getWebDomain() function always returns null in Android AutoFill service
在為我的密碼管理器實現 Android 自動填充功能時,我無法獲取與用戶交互的網頁的域名。 在測試其他密碼管理器時,我看到他們能夠獲取域,因為他們能夠根據存儲在各種記錄中的域來過濾響應。 例如,如果我有 3 條以“yahoo.com”為域的記錄和 6 條具有不同域的其他記錄,當我點擊雅虎登錄表單上的用戶名字段時,我只看到 3 條帶有“ yahoo.com”作為域,這是正確的功能。 在我自己的應用程序中,當我點擊用戶名字段時,我會看到所有 9 條記錄。 我無法獲得適當過濾記錄所需的域。
我詳細研究了文檔,並使用了Google 的示例進行開發。
我沒有發現任何提及獲取域可能有任何困難,但我無法獲取我需要的數據。 下面是我如何嘗試在頁面上獲取域名的示例。
public void onFillRequest(FillRequest request, CancellationSignal cancellationSignal, FillCallback callback) {
List<FillContext> context = request.getFillContexts();
AssistStructure structure = context.get(context.size() - 1).getStructure();
ArrayMap<String, AutofillId> fields = new ArrayMap<>();
int nodes = structure.getWindowNodeCount();
for (int i = 0; i < nodes; i++) {
AssistStructure.ViewNode node = structure.getWindowNodeAt(i).getRootViewNode();
String webDomain = node.getWebDomain();
if (webDomain != null){
Log.d(TAG,"domain: " + webDomain);
}
addAutofillableFields(fields, node);
}
FillResponse response = createResponse(this, fields);
callback.onSuccess(response);
}
我無法獲得真正的 webDomain 值。 只有空…
它在應用程序中運行良好,因為我只需要 packageName 來識別應用程序。 但是對於瀏覽器頁面,我需要一個頁面域名。
如果有人能告訴我我做錯了什么,我將不勝感激。 該項目發布在這里-
解決了。 web 域名只能從節點樹中的一個節點中檢索。 我認為應該為每個節點填充它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.