解决Android SDK Manager更新(一个更新Host的程序的原理实现和源码)

<ignore_js_op> 
    同学遇到了更新Android SDK的问题,而且Goagent现在也无法用来更新。
就想到了用替代Host的方法,添加可用的谷歌地址来实现更新。
    更新Host文件之后的功能:访问谷歌,更新Android SDK


原理分析:
     1. github上的一个hosts项目(https://github.com/racaljk/hosts),获取到最新的Host的文件
     2. 获取hosts的文本网页(https://raw.githubusercontent.com/racaljk/hosts/master/hosts
     3. 把提取这个网页的内容,并且替换在C:WindowsSystem32driversetchosts的文件中


 

C#中得到网页内容的函数:
private string GetGeneralContent(string strUrl)
{
    string strMsg = string.Empty;
    try
    {
        WebRequest request = WebRequest.Create(strUrl);
        WebResponse response = request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
 
        strMsg = reader.ReadToEnd();
 
        reader.Close();
        reader.Dispose();
        response.Close();
    }
    catch
    { }
    return strMsg;
}

  按钮点击事件:

private void button1_Click(object sender, EventArgs e)
{
    string add = GetGeneralContent("[url=https://raw.githubusercontent.com/racaljk/hosts/master/hosts"]https://raw.githubusercontent.com/racaljk/hosts/master/hosts"[/url]);
    if (add != "")
    {
        //string str2 = File.ReadAllText(@"C:WindowsSystem32driversetchosts", Encoding.ASCII);
        //str2 = str2 + '
' + add;
        string str2 = add;
        File.WriteAllText(@"C:WindowsSystem32driversetchosts", str2, Encoding.ASCII);
        MessageBox.Show( "修改成功" ,"xiaoz 提示:");
    }
    else {
        MessageBox.Show("修改失败", "xiaoz 提示:");
    }
}

  

软件运行图(需要管理员权限):

 

Android SDK更新图:

 


软件需要管理员权限
软件需要管理员权限
软件需要管理员权限
(.net framework 4.0 环境)
软件下载地址:http://pan.baidu.com/s/1i32KqJb 密码:szo9
源码下载地址:http://pan.baidu.com/s/1eQ2kw3g 密码:7er9
原文地址:https://www.cnblogs.com/Zengineer/p/4909534.html