На самом деле я хочу включить подключение для передачи данных, когда я ввожу неправильный пароль на телефоне Android. Я использовал ConnectivityManager, но он не работает нормально. Вот исходный код, который я использовал.
ConnectivityManager dataManager; dataManager = (ConnectivityManager) ctxt.getSystemService (CONNECTIVITY_SERVICE); Метод dataMtd = null; dataMtd = ConnectivityManager.class.getDeclaredMethod ("setMobileDataEnabled", boolean.class); dataMtd.setAccessible (true); dataMtd.invoke (dataManager, true);
Как включить 3G кнопкой — android
Я ищу looooooot, но не нашел того, что хочу.
Я пытаюсь создать приложение, которое пользователь может включать и выключать, нажимая кнопку для каждого из них.
Я нашел несколько кодов, использующих отражение (я буду использовать Android 2.3 и выше ), но я не знаю, как адаптировать его для использования с кнопками.
Я ищу, как работает отражение, я трачу много времени на поиск других способов сделать это, но … любой работает для меня.
Наихудшая проблема — это коды и примеры, которые я нашел, не использовали исключения (бросает или пытается поймать), поэтому я не знаю, как с ними работать.
Это код, который я нашел здесь, но я не знаю, как его использовать (или назвать его истинным или ложным, чтобы включить и отключить данные 3G/Mobile) в Нажатие кнопки.
Кто-нибудь может мне помочь?
private void setMobileDataEnabled (контекст контекста, логическое значение включено) {final ConnectivityManager conman = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE); последний класс conmanClass = Class.forName (conman.getClass (). getName ()); последнее поле iConnectivityManagerField = conmanClass.getDeclaredField ("mService"); iConnectivityManagerField.setAccessible (true); конечный объект iConnectivityManager = iConnectivityManagerField.get (conman); последний класс iConnectivityManagerClass = Class.forName (iConnectivityManager.getClass (). getName ()); финальный метод setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod ("setMobileDataEnabled", Boolean.TYPE); setMobileDataEnabledMethod.setAccessible (true); setMobileDataEnabledMethod.invoke (iConnectivityManager, включен); }
Ссылка на то, где я нашел этот код: Как программно отключить 3G/данные на Android?
привет! вам просто нужно вызвать функцию внутри onClickListener каждой кнопки и позволить ей работать в отдельном потоке!
On Button:
btOn.setOnClickListener (new View.OnClickListener () {@Override public void onClick (View view) {Toast.makeText (MainActivity.this, «Попытка включить 3G!», Toast.LENGTH_SHORT) .show (); (новый поток (новый Runnable () {@Override public void run () {setMobileDataEnabled (MainActivity.this, true); runOnUiThread (new Runnable () {@Override public void run () { Toast.makeText (MainActivity.this, «Включено 3G!», Toast.LENGTH_SHORT) .show ();}});}})). Начните(); }});
Кнопка выключения:
btOff.setOnClickListener (новый View. OnClickListener () {@Override public void onClick (View view) {Toast.makeText (MainActivity.this, «Попытка выключить 3G!», Toast.LENGTH_SHORT) .show (); (new Thread (new Runnable () {@ Переопределить public void run () {setMobileDataEnabled (MainActivity.this, false); runOnUiThread (new Runnable () {@Override public void run () {Toast.makeText (MainActivity.this, «Выключено 3G!», Toast.LENGTH_SHORT) .show ();}});}})). start ();}});
* Добавить предложения try … catch к функция:
final ConnectivityManager conman;
conman = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
final Класс conmanClass; попробуйте {conmanClass = Class.forName (conman.getClass (). getName ()); последнее поле iConnectivityManagerField = conmanClass.getDeclaredField ("mService"); iConnectivityManagerField.setAccessible (true); конечный объект iConnectivityManager = iConnectivityManagerField.get (conman); последний класс iConnectivityManagerClass = Class.forName (iConnectivityManager.getClass (). getName ()); финальный метод setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod ("setMobileDataEnabled", Boolean.TYPE); setMobileDataEnabledMethod.setAccessible (true); setMobileDataEnabledMethod.invoke (iConnectivityManager, включен); } catch (ClassNotFoundException e) {e.printStackTrace (); } catch (InvocationTargetException e) {e.printStackTrace (); } catch (NoSuchMethodException e) {e.printStackTrace (); } catch (IllegalAccessException e) {e.printStackTrace (); } catch (NoSuchFieldException e) {e.printStackTrace (); }}
Надеюсь, это ответ на ваш вопрос!