簡體   English   中英

getWebDomain() function 總是在 Android 自動填充服務中返回 null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM