Питання Як отримати стандартний HTTP USER AGENT з пристрою Android?


Як отримати типовий HTTP USER AGENT та його параметри за замовчуванням на пристрої android?

Дякую
Носіб


9
2017-07-26 02:32


походження




Відповіді:


Редагування: див. Відповідь Пракаша, що краще для 2.1+.

Спробуй http://developer.android.com/reference/android/webkit/WebSettings.html#getUserAgentString

Зверніть увагу, що цей User Agent буде застосовуватися лише для вбудованого браузера WebKit, який за замовчуванням використовується в Android. На жаль, вам доведеться створити новий об'єкт WebView, щоб отримати агент користувача. На щастя, користувальницький агент часто не змінюється, тому вам потрібно буде запускати цей код лише один раз протягом усього терміну дії програми (якщо ви не дбаєте про продуктивність). Просто:

String userAgent = new WebView(this).getSettings().getUserAgentString();

Крім того, ви можете використовувати метод JavaScript navigator.getUserAgent().


6
2017-07-26 02:38



Спасибі Олегу, якщо б ви могли люб'язно поділитися фрагментом коду з тим самим, це допоможе. - Nohsib
Добре, я відредагував мою відповідь. (І наступного разу не забувайте робити пошук спочатку.) - Oleg Vaskevich


як зазначив Варундройд у своїй відповіді,

String userAgent = System.getProperty("http.agent"); 

це кращий спосіб зробити це для Android 2.1 і вище.

====================

З вихідного коду Android.

public static String getDefaultUserAgent() {
    StringBuilder result = new StringBuilder(64);
    result.append("Dalvik/");
    result.append(System.getProperty("java.vm.version")); // such as 1.1.0
    result.append(" (Linux; U; Android ");

    String version = Build.VERSION.RELEASE; // "1.0" or "3.4b5"
    result.append(version.length() > 0 ? version : "1.0");

    // add the model for the release build
    if ("REL".equals(Build.VERSION.CODENAME)) {
        String model = Build.MODEL;
        if (model.length() > 0) {
            result.append("; ");
            result.append(model);
        }
    }
    String id = Build.ID; // "MASTER" or "M4-rc20"
    if (id.length() > 0) {
        result.append(" Build/");
        result.append(id);
    }
    result.append(")");
    return result.toString();
}   

27
2018-01-28 23:46



Це добре, але якщо схема змінюється в майбутніх пристроях, вона може бути неточною. - Oleg Vaskevich
Схема є специфікацією, тому ви можете додати будь-які значення до нього, якщо вона відповідає специфікації. - Prakash Nadar


Коли ви використовуєте веб-перегляд для доступу до агента-користувача, переконайтеся, що ви запустите

new WebView(this).getSettings().getUserAgentString();

на потоці користувальницького інтерфейсу.

Якщо ви хочете отримати доступ до агента користувача на фоновому потоці. використовувати

System.getProperty("http.agent")

Щоб перевірити, чи є користувальницький агентом дійсний чи ні, скористайтеся цим https://deviceatlas.com/device-data/user-agent-tester


1
2018-05-30 17:10