Intereting Posts
Как избежать TagManager «IllegalStateException: результаты уже установлены» Игровой движок для iPhone / Android Независимый настраиваемый диалог версии платформы со стандартным значком, заголовком и кнопками Переопределение всплывающего фона переполнения ActionBarCompat? Google подписывает подписанный apk не работает Проблема с мгновенным запуском на Android Studio 2.2 Как получить представление при перетаскивании и андроиде? Firebase JobDispatcher – как он работает по сравнению с предыдущими API (JobScheduler и GcmTaskService)? Преобразование Dalvik с использованием неправильного кода invoke-opcode Android JellyBean BigTextStyle Notification не работает – HTC One X AT & T Передача объекта GoogleApiClient из одного действия в другое Создание Android LIbrary Jar Использование градиента с зависимостями Получить публичные твиты Twitter API 1.1 Уведомление о push-канале GCM вызывает 502 Bad Gateway Есть ли способ поделиться одним и тем же LayoutManager между несколькими вложенными RecyclerViews

Android – активировать USB-привязку программно – есть приложение, которое сделало это для 2.3

Я прочитал много вопросов здесь, где спрашивают, как включить USB-привязку программно.

Ответ всегда один и тот же, обычные приложения не могут этого сделать, только системные приложения.

Тем не менее, для 2.3 вы можете скачать приложение на рынке, которое сделает это за вас.

https://play.google.com/store/apps/details?id=org.tdtran.autousbtethering

В ICS (Android 4.0.3) он больше не работает.

Как они это сделали за 2,3? Возможно ли это и для 4.0?

Используя следующий код, вы можете включить USB-модем. I didt test в 4.0.

public void switchOnTethering() { Object obj = getSystemService(Context.CONNECTIVITY_SERVICE); for (Method m : obj.getClass().getDeclaredMethods()) { if (m.getName().equals("tether")) { try { m.invoke(obj, "usb0"); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } 

ICS и выше: для выполнения метода отражения для приложения потребуется разрешение WRITE_SECURE_SETTINGS .

Это невозможно, если телефон не укоренен.

Поскольку это одна из самых популярных страниц в результатах Google для этой темы, я бы хотел внести свой код, который проверяет доступные интерфейсы. Он работает на телефоне Gingerbread, который у меня есть, но не в моей Galaxy S3.

  // DETECT INTERFACE NAME Log.i("UsbTethering","Detecting tetherable usb interface."); String[] available = null; ConnectivityManager connMgr = (ConnectivityManager)connectivityServiceObject; Method[] wmMethods = connMgr.getClass().getDeclaredMethods(); for(Method getMethod: wmMethods) { if(getMethod.getName().equals("getTetherableUsbRegexs")) { try { available = (String[]) getMethod.invoke(connMgr); break; } catch (Exception e) { e.printStackTrace(); } } } // DETECT INTERFACE NAME if(available.length > 0) { for(String interfaceName : available) { Log.i("UsbTethering", "Detected " + String.valueOf(available.length) + " tetherable usb interfaces."); Log.i("UsbTethering", "Trying to " + desiredString + " UsbTethering on interface " + interfaceName + "..."); Integer returnCode = (Integer)method.invoke(connectivityServiceObject, interfaceName); if(returnCode == 0) { Log.i("UsbTethering", "UsbTethering " + desiredString + "d."); return true; } else { Log.w("UsbTethering", "Failed to " + desiredString + "Usb Tethering. ReturnCode of method " + method.getName() + ": " + String.valueOf(returnCode)); } } } 

На Samsumg Galaxy Tab 2 10.1 интерфейс не называется «usb0», а «rndis0». Возможно, это так же для Galaxy SII

Порт «rndis0» включен динамически недоступным в списке интерфейсов Tetherable. Он добавляется, когда пользователь выбирает опцию USB Tethering в меню. При выборе опции вызывается функция ConnectivityManager :: setUsbTethering (bool). И этот вызов функции разрешен только для системных приложений.