Я знаю, что это старая ветка, но я надеюсь, что это может помочь другим людям в будущем,
Этот код работал для меня в Android 4.4 (с привилегиями root)
code: хитрость заключается в использовании отражения, метод, который изменяет usb-тетринг, называется "setUsbTethering"
Я не напишу весь класс, но вот что вам нужно:
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
Method usbTethering = connectivityManager.getClass().getMethod('setUsbTethering')
int returnCode = (Integer)usbTethering.invoke(connectivityManager, true);
0 = success
вы можете распечатать все методы класса, используя следующий код
private static void printClassMethod(@NonNull Class aClazz) {
Method[] wmMethods = aClazz.getDeclaredMethods();
for (Method method : wmMethods) {
Log.i('anytag', method.getName());
}
}
, затем вызвать printClassMethod(ConnectivityManager.class)
Более того, вы можете перейти к самому классу и проверить необходимые методы и аргументы.
, чтобы все заработало: вы должны установить свое приложение как Системное приложение,
Объявить в манифесте: android: sharedUserId = "android.uid.system"
добавить защищенное разрешение на запись <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"
Подпишите apk с помощью ключа сертификата Google ( apk-with-system-privileges ) и нажмите его в / system / app
Помните, что usb-модем включенЕсли USB подключен, то более удачным решением будет зарегистрировать как USB_STATE, так и USB_ATTACH и соответственно включить / отключить его в методе onReceive.(USB-модем автоматически отключается при отключении USB)