#android #intentfilter #samsung-mobile #captivenetwork #captiveportal
#Android #intentfilter #samsung-мобильный #captivenetwork #captiveportal
Вопрос:
Я хочу настроить действие, которое можно выбрать для навигации по захваченному порталу.
Когда я выбираю сеть Wi-Fi, которая является captive, я хочу иметь возможность выбирать свое приложение в качестве обработчика вместо запуска приложения CaptivePortalLogin, которое предварительно установлено на каждом телефоне Android.
Это работает на Pixel 2 и OnePlus 6t, но не работает ни на одном из Samsung телефонов, которые у меня есть (S10 (9.0.0), S8 (8.0.0), A6 (8.0.0)). На телефонах Samsung он мгновенно открывает приложение CaptivePortalLogin.
Приложение CaptivePortalLogin не установлено в качестве приложения по умолчанию на телефонах Samsung.
Я настроил действие стандартным способом:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.net.conn.CAPTIVE_PORTAL"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Есть ли способ заставить телефоны Samsung вести себя так, как ведут себя все остальные телефоны?
Комментарии:
1. AFAIK captive portal работает по-другому для samsung Android. Они работают не через перенаправление 302, которое затем использует намерение пользователя, а путем доступа к / generate_204. Таким образом, им не нужно полагаться на captive portal intent.
Ответ №1:
Samsung использует механизм captive portal для Android, перенаправляя портал в свою систему, обрабатывает его внутри и блокирует другие запросы captive portal и отображает в своем браузере. Как Samsung, некоторые другие производители, такие как Huawei и многие другие, также используют свой собственный механизм, и только некоторые, включая Oneplus, Mi, Htc и другие, используют механизм по умолчанию и, следовательно, могут быть перенаправлены в приложение с использованием фильтра намерений портала, но не для чего-либо еще.
<intent-filter>
<action android:name="android.net.conn.CAPTIVE_PORTAL"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
Одна ссылка, ясно объясняющая это, находится здесь: