cambiare proxy internet (Wifi, 3G, GPRS) in android 2.2 una cima dal codice

Sto provando a cambiare il proxy per tutto il tipo di connessione Internet (Wifi, 3G, GPRS) dal codice (con un evento button). e dopo un paio di minuti cambiarli a quello che fossero. Ho cercato e so che per la modifica proxy di impostazione dal codice ho bisogno di queste autorizzazioni:

<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 

ma non posso get quelle autorizzazioni al mio programma. Voglio che la mia app funzioni per android 2.2 e superiore. Puoi darmi un progetto di esempio con lo studio android?

  • Animazione di tabs di flip tra le attività
  • In Android, come get il profilo di un dispositivo Bluetooth collegato?
  • usando twitter4j per l'integrazione a tweet in android
  • Aggiorna la visualizzazione frammento quando si fa clic sul button
  • Come aggiungere un nuovo codec video a Android?
  • Android TextWatcher.afterTextChanged vs TextWatcher.onTextChanged
  • Come eseguire il binding di dati bidirezionali con un button ToggleButton?
  • Come mettere un jar nel classpath in Eclipse?
  • Apertura di un dialogo con input di text da una vista in Android
  • Come si può rilevare se il dispositivo è radicato nell'applicazione?
  • Come impostare il margine in linearlayout gonfiato in modo dinamico?
  • Nascondere solo la barra delle azioni in Scorrimento non tab delle barre di azione
  • One Solution collect form web for “cambiare proxy internet (Wifi, 3G, GPRS) in android 2.2 una cima dal codice”

    È ansible fare riferimento al codice di seguito per aggiungere nuove impostazioni wifi attraverso la riflessione , [ho scritto questo codice e il test su 4.x]

     public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); connectToAP("12345", "12345"); WifiConfiguration wifiConf = null; WifiManager wifiManager = (WifiManager) getSystemService(MainActivity.WIFI_SERVICE); WifiInfo connectionInfo = wifiManager.getConnectionInfo(); List<WifiConfiguration> configuredNetworks = wifiManager .getConfiguredNetworks(); for (WifiConfiguration conf : configuredNetworks) { if (conf.networkId == 13) { wifiConf = conf; try { setIpAssignment("STATIC", wifiConf); // or "DHCP" for // dynamic setting setIpAddress(InetAddress.getByName("192.168.0.100"), 24, wifiConf); setGateway(InetAddress.getByName("4.4.4.4"), wifiConf); setDNS(InetAddress.getByName("4.4.4.4"), wifiConf); wifiManager.updateNetwork(wifiConf); // apply the setting wifiManager.saveConfiguration(); // Save it } catch (Exception e) { e.printStackTrace(); } break; } } } public static void setIpAssignment(String assign, WifiConfiguration wifiConf) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException { setEnumField(wifiConf, assign, "ipAssignment"); } public static void setEnumField(Object obj, String value, String name) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Field f = obj.getClass().getField(name); f.set(obj, Enum.valueOf((Class<Enum>) f.getType(), value)); } public static void setIpAddress(InetAddress addr, int prefixLength, WifiConfiguration wifiConf) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException, NoSuchMethodException, ClassNotFoundException, InstantiationException, InvocationTargetException { Object linkProperties = getField(wifiConf, "linkProperties"); if (linkProperties == null) return; Class laClass = Class.forName("android.net.LinkAddress"); Constructor laConstructor = laClass.getConstructor(new Class[] { InetAddress.class, int.class }); Object linkAddress = laConstructor.newInstance(addr, prefixLength); ArrayList mLinkAddresses = (ArrayList) getDeclaredField(linkProperties, "mLinkAddresses"); mLinkAddresses.clear(); mLinkAddresses.add(linkAddress); } public static void setGateway(InetAddress gateway, WifiConfiguration wifiConf) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException, ClassNotFoundException, NoSuchMethodException, InstantiationException, InvocationTargetException { Object linkProperties = getField(wifiConf, "linkProperties"); if (linkProperties == null) return; Class routeInfoClass = Class.forName("android.net.RouteInfo"); Constructor routeInfoConstructor = routeInfoClass .getConstructor(new Class[] { InetAddress.class }); Object routeInfo = routeInfoConstructor.newInstance(gateway); ArrayList mRoutes = (ArrayList) getDeclaredField(linkProperties, "mRoutes"); mRoutes.clear(); mRoutes.add(routeInfo); } public static void setDNS(InetAddress dns, WifiConfiguration wifiConf) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException { Object linkProperties = getField(wifiConf, "linkProperties"); if (linkProperties == null) return; ArrayList<InetAddress> mDnses = (ArrayList<InetAddress>) getDeclaredField( linkProperties, "mDnses"); mDnses.clear(); // or add a new dns address , here I just want to // replace DNS1 mDnses.add(dns); } public static Object getField(Object obj, String name) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Field f = obj.getClass().getField(name); Object out = f.get(obj); return out; } public static Object getDeclaredField(Object obj, String name) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Field f = obj.getClass().getDeclaredField(name); f.setAccessible(true); Object out = f.get(obj); return out; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } String TAG = "wifi"; WifiManager wifiManager; public void connectToAP(String ssid, String passkey) { Log.i(TAG, "* connectToAP"); wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiConfiguration wifiConfiguration = new WifiConfiguration(); String networkSSID = ssid; String networkPass = passkey; Log.d(TAG, "# password " + networkPass); // for (ScanResult result : scanResultList) { // if (result.SSID.equals(networkSSID)) { if (true) { // String securityMode = getScanResultSecurity(result); String securityMode = "WEP"; if (securityMode.equalsIgnoreCase("OPEN")) { wifiConfiguration.SSID = "\"" + networkSSID + "\""; wifiConfiguration.allowedKeyManagement .set(WifiConfiguration.KeyMgmt.NONE); int res = wifiManager.addNetwork(wifiConfiguration); Log.d(TAG, "# add Network returned " + res); boolean b = wifiManager.enableNetwork(res, true); Log.d(TAG, "# enableNetwork returned " + b); wifiManager.setWifiEnabled(true); } else if (securityMode.equalsIgnoreCase("WEP")) { wifiConfiguration.SSID = "\"" + networkSSID + "\""; wifiConfiguration.wepKeys[0] = "\"" + networkPass + "\""; wifiConfiguration.wepTxKeyIndex = 0; wifiConfiguration.allowedKeyManagement .set(WifiConfiguration.KeyMgmt.NONE); wifiConfiguration.allowedGroupCiphers .set(WifiConfiguration.GroupCipher.WEP40); int res = wifiManager.addNetwork(wifiConfiguration); Log.d(TAG, "### 1 ### add Network returned " + res); boolean b = wifiManager.enableNetwork(res, true); Log.d(TAG, "# enableNetwork returned " + b); wifiManager.setWifiEnabled(true); } wifiConfiguration.SSID = "\"" + networkSSID + "\""; wifiConfiguration.preSharedKey = "\"" + networkPass + "\""; wifiConfiguration.hiddenSSID = true; wifiConfiguration.status = WifiConfiguration.Status.ENABLED; wifiConfiguration.allowedGroupCiphers .set(WifiConfiguration.GroupCipher.TKIP); wifiConfiguration.allowedGroupCiphers .set(WifiConfiguration.GroupCipher.CCMP); wifiConfiguration.allowedKeyManagement .set(WifiConfiguration.KeyMgmt.WPA_PSK); wifiConfiguration.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.TKIP); wifiConfiguration.allowedPairwiseCiphers .set(WifiConfiguration.PairwiseCipher.CCMP); wifiConfiguration.allowedProtocols .set(WifiConfiguration.Protocol.RSN); wifiConfiguration.allowedProtocols .set(WifiConfiguration.Protocol.WPA); int res = wifiManager.addNetwork(wifiConfiguration); Log.d(TAG, "### 2 ### add Network returned " + res); wifiManager.enableNetwork(res, true); boolean changeHappen = wifiManager.saveConfiguration(); if (res != -1 && changeHappen) { Log.d(TAG, "### Change happen"); // AppStaticVar.connectedSsidName = networkSSID; } else { Log.d(TAG, "*** Change NOT happen"); } wifiManager.setWifiEnabled(true); } // } } public String getScanResultSecurity(ScanResult scanResult) { Log.i(TAG, "* getScanResultSecurity"); final String cap = scanResult.capabilities; final String[] securityModes = { "WEP", "PSK", "EAP" }; for (int i = securityModes.length - 1; i >= 0; i--) { if (cap.contains(securityModes[i])) { return securityModes[i]; } } return "OPEN"; } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.