Android-прокси Wi-Fi против мобильных устройств

Я знаю, что это беспорядок, когда дело доходит до поддержки прокси в Android, и много разочарований. Я прочитал большинство сообщений на SO, и я все еще в замешательстве.

Я хотел бы поддерживать как Wi-Fi-прокси, так и мобильный прокси-сервер, и я знаю, что были некоторые изменения в поддержке прокси-серверов до сотовых и почтовых сот. Я также читал, что вам нужно быть системным приложением, чтобы установить прокси, даже если у вас есть разрешение android.permission.WRITE_SECURE_SETTINGS.

Итак, могу ли я установить системный прокси для Wi-Fi и мобильной сети из своего приложения? Есть ли разница до соты и после соты?

Какой предпочтительный способ получить настройки прокси для Wi-Fi и мобильной сети? Есть ли разница до соты и после? Если я хочу использовать его в своем приложении, это просто установить параметр прокси в объекте httpClient? Что-нибудь еще мне нужно сделать? Или я должен использовать системное свойство?

Пожалуйста, рассмотрите случай, когда Wi-Fi и мобильный прокси могут отличаться.

Любой указатель на хороший документ по этому вопросу (обновленный, чтобы отразить изменения, произошедшие с сотами) был бы очень полезен. Я не нашел хороших.


person Safecoder    schedule 04.02.2012    source источник


Ответы (2)


С отражением вы можете получить настройки прокси для каждой точки доступа Wi-Fi. Это то, что делает эта библиотека. Вы можете использовать его, чтобы легко получить доступ к настройкам прокси для текущей конфигурации.

person lechuckcaptain    schedule 22.02.2012
comment
Спасибо, ЛеЧак! Извините, я не заметил, что у меня есть новый ответ до сих пор. Я только что загрузил ваш последний APL и попробовал ваше тестовое приложение. В нем перечислены все точки доступа, но все они говорят НЕ УСТАНОВЛЕНЫ. Я знаю, что у одного из них есть настройка прокси. Поэтому мне нужно повнимательнее взглянуть на ваш код, чтобы понять, почему он не работает. Кстати, я использую Moto Xoom для тестирования, потому что я думаю, что APL работает только для уровня API ›=11. Мы ценим любые предложения. Ваш блог также очень информативен. Спасибо! - person Safecoder; 03.03.2012
comment
Кроме того, я только что опубликовал еще один вопрос о прокси, спасибо, если вы можете взглянуть и пролить свет stackoverflow.com/questions/9544582/ - person Safecoder; 03.03.2012
comment
Да, ты прав. Настройки прокси для каждой точки доступа введены начиная с уровня API ›= 11. Для устройств с версией API ниже ‹ 11 мне до сих пор непонятно, как пользователь или разработчик может установить настройки прокси. На самом деле у меня все еще есть вопросы без ответов stackoverflow.com/questions/9446871/ . Я надеюсь, что некоторые гуглеры ответят (если вам интересна тема, просто проголосуйте!) - person lechuckcaptain; 03.03.2012
comment
Просто проголосовал за это. Я удвою, что любой гуглер ответит на него :-) Я думаю, что все они получили приказ от своего большого босса не комментировать ничего, чего нет в SDK. - person Safecoder; 03.03.2012
comment
Ну, на самом деле класс ProxySelector находится в SDK. Нам просто нужно понять, как это работает для устройств с уровнем API ‹ 11. Это небольшое усилие для того, кто действительно знает, как работает система, но большой подарок для нас, разработчиков. - person lechuckcaptain; 04.03.2012

Итак, могу ли я установить системный прокси для Wi-Fi и мобильной сети из своего приложения?

Нет, если ваше приложение не является частью прошивки.

Есть ли разница до соты и после соты?

Не в отношении того, можете ли вы их установить.

Какой предпочтительный способ получить настройки прокси для Wi-Fi и мобильной сети?

Насколько я знаю, есть только одна доступная настройка прокси, Settings.Secure.HTTP_PROXY, которую вы получаете через вызов getString() на Settings.Secure.

Есть ли разница до соты и после?

Не то, чтобы я в курсе.

person CommonsWare    schedule 04.02.2012
comment
Спасибо, CommonWare! Итак, используя Setting.Secure, вы получаете прокси Wi-Fi или мобильный прокси? Насколько я понимаю, это только для мобильной сети. в Honeycomb и ICS вы можете установить прокси-сервер Wi-Fi или даже прокси-сервер Wi-Fi для каждой точки доступа Wi-Fi. Вы знаете, как справиться с этим в моем коде? Не удалось найти хороших документов. - person Safecoder; 04.02.2012
comment
@HowardLi: в Honeycomb и ICS вы можете установить прокси-сервер Wi-Fi или даже прокси-сервер Wi-Fi для каждой точки доступа Wi-Fi - я не вижу доказательств этого в SDK или на реальном оборудовании. - person CommonsWare; 04.02.2012
comment
У меня есть планшет Android, и он работает под управлением 3.2 (я не пробовал ICS). Поэтому, если вы перейдете к настройкам Wi-Fi, нажмите и удерживайте точку доступа / SSID, затем вы увидите всплывающее окно, выберите «Изменить вручную» (второй из списка), затем вы можете установить для него прокси-сервер Wi-Fi. Сейчас у меня нет с собой этого устройства, поэтому пишу по памяти. Некоторые детали могут немного отличаться, но я уверен, что вы справитесь. - person Safecoder; 04.02.2012
comment
@HowardLi: ничего из этого не задокументировано; Я понятия не имею, что это значит. Прости. - person CommonsWare; 04.02.2012