Skip to content

Instantly share code, notes, and snippets.

@kagasu
Last active December 20, 2016 00:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kagasu/08103bdf94b1b95dd8c8d8fd743b291a to your computer and use it in GitHub Desktop.
Save kagasu/08103bdf94b1b95dd8c8d8fd743b291a to your computer and use it in GitHub Desktop.
package kagasu.net.wifiproxy;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
public class MainActivity extends AppCompatActivity {
private WifiManager wifiManager;
private static final int IPCONFIG_FILE_VERSION = 2;
private static final String ipConfigFile = Environment.getDataDirectory() + "/misc/wifi/ipconfig.txt";
private static final String sdcardIpConfigFile = Environment.getExternalStorageDirectory() + "/ipconfig.txt";
private static final String ID_KEY = "id";
private static final String IP_ASSIGNMENT_KEY = "ipAssignment";
private static final String PROXY_SETTINGS_KEY = "proxySettings";
private static final String PROXY_HOST_KEY = "proxyHost";
private static final String PROXY_PORT_KEY = "proxyPort";
private static final String EXCLUSION_LIST_KEY = "exclusionList";
private static final String EOS = "eos";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Wi-Fiの状態を取得する
wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
// Wi-Fiが有効になっている場合、無効にする
if(wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
}
try {
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(sdcardIpConfigFile)));
out.writeInt(IPCONFIG_FILE_VERSION);
out.writeUTF(IP_ASSIGNMENT_KEY);
out.writeUTF("DHCP");
out.writeUTF(PROXY_SETTINGS_KEY);
out.writeUTF("STATIC");
out.writeUTF(PROXY_HOST_KEY);
out.writeUTF("192.168.1.11");
out.writeUTF(PROXY_PORT_KEY);
out.writeInt(8008);
out.writeUTF(EXCLUSION_LIST_KEY);
out.writeUTF("");
out.writeUTF(ID_KEY);
// 任意の値に変更
out.writeInt(0x4062a3d6);
out.writeUTF(EOS);
out.flush();
Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", "cp" + " " + sdcardIpConfigFile + " " + ipConfigFile});
process.waitFor();
}catch(Exception e)
{
e.printStackTrace();
}
// Wi-Fiを有効にする
wifiManager.setWifiEnabled(true);
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kagasu.net.wifiproxy">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment