• 未来三天全国天气预报:台风给东南沿海带来大风 2019-03-18
  • 人民日报评论员:毫不动摇把党建设得更加坚强有力 2019-03-18
  • 内蒙古赤峰市原副市长于文涛接受纪律审查和监察调查 2019-03-15
  • 谷歌因为这些原因,选择加纳建立其在非洲首个人工智能中心 2019-03-14
  • 陈光标嘱咐小儿子:捐两毛钱也要到处说[图] 2019-03-14
  • 快乐十分容易出的5个号:

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

    2017年9月27日

    System.out.println("availableLocales :"+  Locale.getAvailableLocales().length);

    Locale[] arr=Locale.getAvailableLocales();
    Arrays.sort(arr, new Comparator<Locale>() {
    @Override
    public int compare(Locale o1, Locale o2) {
    return o1.getLanguage().compareTo(o2.getLanguage());
    }
    });

    for(Locale l:arr){
    System.out.println("语言:"+ l.getLanguage()+" 名称:"+l.getDisplayLanguage()
    +(StringUtils.isEmpty(l.getDisplayCountry())?"":(" 国家:"+ l.getDisplayCountry())) + " "+l.toString());
    }
    输出如下
    availableLocales :160
    语言: 名称:
    语言:ar 名称:阿拉伯文 国家:阿拉伯联合酋长国 ar_AE
    语言:ar 名称:阿拉伯文 国家:约旦 ar_JO
    语言:ar 名称:阿拉伯文 国家:叙利亚 ar_SY
    语言:ar 名称:阿拉伯文 国家:巴林 ar_BH
    语言:ar 名称:阿拉伯文 国家:沙特阿拉伯 ar_SA
    语言:ar 名称:阿拉伯文 国家:也门 ar_YE
    语言:ar 名称:阿拉伯文 国家:埃及 ar_EG
    语言:ar 名称:阿拉伯文 国家:苏丹 ar_SD
    语言:ar 名称:阿拉伯文 国家:突尼斯 ar_TN
    语言:ar 名称:阿拉伯文 国家:伊拉克 ar_IQ
    语言:ar 名称:阿拉伯文 国家:摩洛哥 ar_MA
    语言:ar 名称:阿拉伯文 国家:卡塔尔 ar_QA
    语言:ar 名称:阿拉伯文 国家:阿曼 ar_OM
    语言:ar 名称:阿拉伯文 ar
    语言:ar 名称:阿拉伯文 国家:科威特 ar_KW
    语言:ar 名称:阿拉伯文 国家:利比亚 ar_LY
    语言:ar 名称:阿拉伯文 国家:阿尔及利亚 ar_DZ
    语言:ar 名称:阿拉伯文 国家:黎巴嫩 ar_LB
    语言:be 名称:白俄罗斯文 be
    语言:be 名称:白俄罗斯文 国家:白俄罗斯 be_BY
    语言:bg 名称:保加利亚文 bg
    语言:bg 名称:保加利亚文 国家:保加利亚 bg_BG
    语言:ca 名称:加泰罗尼亚文 国家:西班牙 ca_ES
    语言:ca 名称:加泰罗尼亚文 ca
    语言:cs 名称:捷克文 cs
    语言:cs 名称:捷克文 国家:捷克共和国 cs_CZ
    语言:da 名称:丹麦文 国家:丹麦 da_DK
    语言:da 名称:丹麦文 da
    语言:de 名称:德文 de
    语言:de 名称:德文 国家:瑞士 de_CH
    语言:de 名称:德文 国家:奥地利 de_AT
    语言:de 名称:德文 国家:卢森堡 de_LU
    语言:de 名称:德文 国家:德国 de_DE
    语言:de 名称:德文 国家:希腊 de_GR
    语言:el 名称:希腊文 el
    语言:el 名称:希腊文 国家:塞浦路斯 el_CY
    语言:el 名称:希腊文 国家:希腊 el_GR
    语言:en 名称:英文 国家:美国 en_US
    语言:en 名称:英文 国家:新加坡 en_SG
    语言:en 名称:英文 国家:马耳他 en_MT
    语言:en 名称:英文 en
    语言:en 名称:英文 国家:菲律宾 en_PH
    语言:en 名称:英文 国家:新西兰 en_NZ
    语言:en 名称:英文 国家:南非 en_ZA
    语言:en 名称:英文 国家:澳大利亚 en_AU
    语言:en 名称:英文 国家:爱尔兰 en_IE
    语言:en 名称:英文 国家:加拿大 en_CA
    语言:en 名称:英文 国家:印度 en_IN
    语言:en 名称:英文 国家:英国 en_GB
    语言:es 名称:西班牙文 国家:巴拿马 es_PA
    语言:es 名称:西班牙文 国家:委内瑞拉 es_VE
    语言:es 名称:西班牙文 国家:波多黎哥 es_PR
    语言:es 名称:西班牙文 国家:玻利维亚 es_BO
    语言:es 名称:西班牙文 国家:阿根廷 es_AR
    语言:es 名称:西班牙文 国家:萨尔瓦多 es_SV
    语言:es 名称:西班牙文 es
    语言:es 名称:西班牙文 国家:西班牙 es_ES
    语言:es 名称:西班牙文 国家:哥伦比亚 es_CO
    语言:es 名称:西班牙文 国家:巴拉圭 es_PY
    语言:es 名称:西班牙文 国家:厄瓜多尔 es_EC
    语言:es 名称:西班牙文 国家:美国 es_US
    语言:es 名称:西班牙文 国家:危地马拉 es_GT
    语言:es 名称:西班牙文 国家:墨西哥 es_MX
    语言:es 名称:西班牙文 国家:洪都拉斯 es_HN
    语言:es 名称:西班牙文 国家:智利 es_CL
    语言:es 名称:西班牙文 国家:多米尼加共和国 es_DO
    语言:es 名称:西班牙文 国家:古巴 es_CU
    语言:es 名称:西班牙文 国家:乌拉圭 es_UY
    语言:es 名称:西班牙文 国家:哥斯达黎加 es_CR
    语言:es 名称:西班牙文 国家:尼加拉瓜 es_NI
    语言:es 名称:西班牙文 国家:秘鲁 es_PE
    语言:et 名称:爱沙尼亚文 et
    语言:et 名称:爱沙尼亚文 国家:爱沙尼亚 et_EE
    语言:fi 名称:芬兰文 国家:芬兰 fi_FI
    语言:fi 名称:芬兰文 fi
    语言:fr 名称:法文 国家:比利时 fr_BE
    语言:fr 名称:法文 国家:瑞士 fr_CH
    语言:fr 名称:法文 fr
    语言:fr 名称:法文 国家:卢森堡 fr_LU
    语言:fr 名称:法文 国家:法国 fr_FR
    语言:fr 名称:法文 国家:加拿大 fr_CA
    语言:ga 名称:爱尔兰文 ga
    语言:ga 名称:爱尔兰文 国家:爱尔兰 ga_IE
    语言:hi 名称:印地文 国家:印度 hi_IN
    语言:hi 名称:印地文 hi
    语言:hr 名称:克罗地亚文 国家:克罗地亚 hr_HR
    语言:hr 名称:克罗地亚文 hr
    语言:hu 名称:匈牙利文 hu
    语言:hu 名称:匈牙利文 国家:匈牙利 hu_HU
    语言:in 名称:印度尼西亚文 in
    语言:in 名称:印度尼西亚文 国家:印度尼西亚 in_ID
    语言:is 名称:冰岛文 国家:冰岛 is_IS
    语言:is 名称:冰岛文 is
    语言:it 名称:意大利文 it
    语言:it 名称:意大利文 国家:瑞士 it_CH
    语言:it 名称:意大利文 国家:意大利 it_IT
    语言:iw 名称:希伯来文 国家:以色列 iw_IL
    语言:iw 名称:希伯来文 iw
    语言:ja 名称:日文 国家:日本 ja_JP_JP_#u-ca-japanese
    语言:ja 名称:日文 ja
    语言:ja 名称:日文 国家:日本 ja_JP
    语言:ko 名称:朝鲜文 ko
    语言:ko 名称:朝鲜文 国家:韩国 ko_KR
    语言:lt 名称:立陶宛文 lt
    语言:lt 名称:立陶宛文 国家:立陶宛 lt_LT
    语言:lv 名称:拉托维亚文(列托) lv
    语言:lv 名称:拉托维亚文(列托) 国家:拉脱维亚 lv_LV
    语言:mk 名称:马其顿文 mk
    语言:mk 名称:马其顿文 国家:马其顿王国 mk_MK
    语言:ms 名称:马来文 国家:马来西亚 ms_MY
    语言:ms 名称:马来文 ms
    语言:mt 名称:马耳他文 国家:马耳他 mt_MT
    语言:mt 名称:马耳他文 mt
    语言:nl 名称:荷兰文 nl
    语言:nl 名称:荷兰文 国家:荷兰 nl_NL
    语言:nl 名称:荷兰文 国家:比利时 nl_BE
    语言:no 名称:挪威文 国家:挪威 no_NO_NY
    语言:no 名称:挪威文 国家:挪威 no_NO
    语言:no 名称:挪威文 no
    语言:pl 名称:波兰文 国家:波兰 pl_PL
    语言:pl 名称:波兰文 pl
    语言:pt 名称:葡萄牙文 pt
    语言:pt 名称:葡萄牙文 国家:巴西 pt_BR
    语言:pt 名称:葡萄牙文 国家:葡萄牙 pt_PT
    语言:ro 名称:罗马尼亚文 国家:罗马尼亚 ro_RO
    语言:ro 名称:罗马尼亚文 ro
    语言:ru 名称:俄文 国家:俄罗斯 ru_RU
    语言:ru 名称:俄文 ru
    语言:sk 名称:斯洛伐克文 sk
    语言:sk 名称:斯洛伐克文 国家:斯洛伐克 sk_SK
    语言:sl 名称:斯洛文尼亚文 sl
    语言:sl 名称:斯洛文尼亚文 国家:斯洛文尼亚 sl_SI
    语言:sq 名称:阿尔巴尼亚文 sq
    语言:sq 名称:阿尔巴尼亚文 国家:阿尔巴尼亚 sq_AL
    语言:sr 名称:塞尔维亚文 国家:黑山 sr_ME
    语言:sr 名称:塞尔维亚文 国家:波斯尼亚和黑山共和国 sr_BA_#Latn
    语言:sr 名称:塞尔维亚文 国家:塞尔维亚及黑山 sr_CS
    语言:sr 名称:塞尔维亚文 国家:波斯尼亚和黑山共和国 sr_BA
    语言:sr 名称:塞尔维亚文 国家:黑山 sr_ME_#Latn
    语言:sr 名称:塞尔维亚文 sr__#Latn
    语言:sr 名称:塞尔维亚文 国家:塞尔维亚 sr_RS
    语言:sr 名称:塞尔维亚文 sr
    语言:sr 名称:塞尔维亚文 国家:塞尔维亚 sr_RS_#Latn
    语言:sv 名称:瑞典文 国家:瑞典 sv_SE
    语言:sv 名称:瑞典文 sv
    语言:th 名称:泰文 国家:泰国 th_TH
    语言:th 名称:泰文 th
    语言:th 名称:泰文 国家:泰国 th_TH_TH_#u-nu-thai
    语言:tr 名称:土耳其文 tr
    语言:tr 名称:土耳其文 国家:土耳其 tr_TR
    语言:uk 名称:乌克兰文 uk
    语言:uk 名称:乌克兰文 国家:乌克兰 uk_UA
    语言:vi 名称:越南文 国家:越南 vi_VN
    语言:vi 名称:越南文 vi
    语言:zh 名称:中文 国家:台湾地区 zh_TW
    语言:zh 名称:中文 国家:香港 zh_HK
    语言:zh 名称:中文 国家:新加坡 zh_SG
    语言:zh 名称:中文 国家:中国 zh_CN
    语言:zh 名称:中文 zh

    posted @ 2017-09-27 20:17 leekiang 阅读(217) | 评论 (0)编辑 收藏

    2016年12月21日


    repositories{
    mavenCentral()
    }
    dependencies {
    compile ('com.google.android.gms:play-services-maps:10.0.1')
    }
    按以上配置,运行clean时报错,无法加载play-services-maps 10.0.1包。
    Error:(69, 14) Failed to resolve: com.google.android.gms:play-services-maps:10.0.1
    <a href="install.m2.repo">Install Repository and sync project</a><br><a href="openFile:/Users/you/AndroidProjects/yourapp/app/build.gradle">Show in File</a><br><a href="open.dependency.in.project.structure">Show in Project Structure dialog</a>
    点击Android Studio的提示如何修复的链接,就会自动下载Google的相关依赖包到本地。下载时弹出窗口中显示的一些信息如下。

    Install Missing Componets
    SDK Path:/User/you/Library/Android/sdk

    To install:
    - SDK Patch Applier v4 (patcher;v4)
    - Google Repository (extras;google;m2repository)

    Installing SDK Patch Applier v4
    Downloading https://dl.google.com/android/repository/3534162-studio.sdk-patcher.zip
    Installing SDK Patch Applier v4 in /Users/you/Library/Android/sdk/patcher/v4
    Installation of SDK Patch Applier v4 complete.

    Installing Google Repository
    Downloading https://dl.google.com/android/repository/google_m2repository_gms_v8_rc42_wear_2b1_rc4.zip
    Installing Google Repository in /Users/you/Library/Android/sdk/extras/google/m2repository
    Installation of Google Repository complete.


    //stackoverflow.com/questions/16978190/add-google-maps-api-v2-in-a-fragment
    //www.joellipman.com/articles/google/android/application-development/android-os-add-googlemap-as-fragment.html
    https://www.zhihu.com/question/20892245
    //blog.csdn.net/woshilisao/article/details/8647649 android fragment(android.support.v4.app.Fragment和android.app.Fragment区别)
    //www.tuicool.com/articles/YFBv6nJ Introduction to Google Maps API for Android

    posted @ 2016-12-21 00:24 leekiang 阅读(571) | 评论 (0)编辑 收藏

    2016年11月24日


    https://github.com/lzyzsd/JsBridge  
    注意:使用lzyzsd/JsBridge  ,覆盖WebViewClient时一定要继承BridgeWebViewClient,否则js和java互相调用不管用
    webview.setWebViewClient(new BridgeWebViewClient(webview) 

    另外还有一个WebViewJavascriptBridge:https://github.com/gzsll/WebViewJavascriptBridge

    //www.cnblogs.com/wingyip/p/5426477.html JsBridge实现Javascript和Java的互相调用
    //blog.csdn.net/sk719887916/article/details/47189607 
     Android 利用WebViewJavascriptBridge 实现js和java的交互
    //www.jb51.net/article/37208.htm Android在其他线程中更新UI线程的解决方法

    posted @ 2016-11-24 16:19 leekiang 阅读(159) | 评论 (0)编辑 收藏

    2016年10月26日

    向下一个Activity传递数据(使用Bundle和Intent.putExtras)
    Intent it = new Intent(Activity.Main.this, Activity2.class);
    Bundle bundle=new Bundle();
    bundle.putString("name", "This is from MainActivity!");
    it.putExtras(bundle);       // it.putExtra("name","abc");
    startActivity(it);            // startActivityForResult(it,REQUEST_CODE);
     
    对于数据的获取可以采用:
    Bundle bundle=getIntent().getExtras();
    String name=bundle.getString("name");

    参考:
    //www.cnblogs.com/feisky/archive/2010/01/16/1649081.html
    //www.cnblogs.com/tornadomeet/archive/2012/07/28/2613617.html 从一个activity跳转到另外一个activity

    posted @ 2016-10-26 00:54 leekiang 阅读(120) | 评论 (0)编辑 收藏

    2016年10月25日

    buildTypes {
    release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    minifyEnabled改为true。
    ProGuard是Android SDK附带的。如果需要顶尖的安全性,ProGuard就力不从心了,可以使用DexGuard。

    参考:
    读懂 Android 中的代码混淆 //droidyue.com/blog/2016/07/10/understanding-android-obfuscated-code-by-proguard/

    posted @ 2016-10-25 23:41 leekiang 阅读(183) | 评论 (0)编辑 收藏

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);
    增加代码requestWindowFeature(Window.FEATURE_NO_TITLE)以去掉标题栏,并且代码放在setContentView之前,但还是报异常
    android.util.AndroidRuntimeException: requestFeature() must be called before adding content
    AppCompatActivity改为Activity才得以解决。不知道AppCompatActivity和Activity有何区别。

    参考://www.cnblogs.com/and_he/archive/2011/06/01/2067106.html Android中全屏或者取消标题栏

    posted @ 2016-10-25 22:38 leekiang 阅读(150) | 评论 (0)编辑 收藏

    2016年10月24日

     首先在“设置”-“关于手机”里多次点击【MIUI版本】进入开发者模式,但在Android Studio里运行时找不到设备,执行adb devices也看不到设备。
    在拨号界面按  *#*#717717#*#*  , 出现 Diag USB port enable。 再次执行adb devices,看到设备了,但显示为unauthorized。
    最后发现,设置-其他高级设置-开发者选项,开启“开发者选项”,同时开启“USB调试”,再次执行adb devices,终于成功的显示设备了。
     

    posted @ 2016-10-24 11:45 leekiang 阅读(214) | 评论 (0)编辑 收藏

    2016年10月21日

    1.public boolean shouldOverrideUrlLoading(WebView view, String url) { 
           view.loadUrl(url);
           return true;
      }
    重写shouldOverrideUrlLoading方法,返回true表示点击链接是在当前webview里打开,而不是调用浏览器打开


    WebViewClient与WebChromeClient的区别 //blog.csdn.net/jackyhuangch/article/details/8310033
    Android中WebView拦截替换网络请求数据//droidyue.com/blog/2014/11/23/block-web-resource-in-webview/
    //www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/1010/1569.html android WebView全面总结
    自定义可下拉刷新的WebView //www.voidcn.com/blog/Moy01/article/p-4587219.html
    android webview远程调试//www.cnblogs.com/carlos-guo/p/3920915.html
    //www.udpwork.com/item/13349.html  WebView处理网页位置请求
    //www.cnblogs.com/over140/archive/2013/03/07/2947721.html 带进度条的webview
    //blog.csdn.net/u014400200/article/details/38511419 webview处理视频
    //blog.csdn.net/jackyhuangch/article/details/8310033 关于android WebViewClient和WebChromeClient
    //www.weblog-life.net/entry/2016/03/12/080300 webview如何使用google地图,日本人写的
    //stackoverflow.com/questions/5329662/android-webview-geolocation  
    https://github.com/delight-im/Android-AdvancedWebView 这个支持地理定位

    posted @ 2016-10-21 21:43 leekiang 阅读(183) | 评论 (0)编辑 收藏

    2016年10月13日

    1. Android Studio2.2在mac下启动报错
    找不到原因,改为使用Android Studio 2.1.3
    下载地址://tools.android.com/download/studio/builds/2-1-3

    2. 编译某项目报错Could not find property 'config' on SigningConfig container
    在build.grade文件的android->signingConfigs节点下增加config配置
    android {
        signingConfigs {
            config {
                keyAlias '你的key别名'
                keyPassword '你的key密码'
                storeFile file('你的密钥存储路径')
                storePassword '你的存储密码'
            }
        }
    ...

    3. 编译报错failed to find target android-22
    /Users/username/Library/Android/sdk/platforms下发现有android-24目录,故将编译级别都设为24。
    修改build.grade文件的相关属性:
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    targetSdkVersion 24
    compile 'com.android.support:appcompat-v7:24.0.0'

    4. 编译报错Gradle sync failed: Gradle DSL method not found: 'android()'
    删除项目根目录下的build.gradle文件,因为app目录下已经有build.gradle了。
    备份下根目录下build.gradle文件的内容:
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    allprojects {
        repositories {
            jcenter()
        }
    }
    android {
        compileSdkVersion 24
    }
    dependencies {
    }

    5. 编译报错Plugin with id 'com.android.application' not found
    恢复项目根目录下的build.gradle文件,将内容修改为如下:
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'
        }
    }

    6. 编译报错:failed to find Build Tools revision 24.0.0
    /Users/username/Library/Android/sdk/build-tools下查看自己的BuildTools版本,发现是24.0.3,然后将buildToolsVersion修改为该版本:
    buildToolsVersion "24.0.3"

    7. Android Studio编译执行以下任务时一直等待,执行了一个小时也没动静。
    Executing tasks: [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:prepareDebugUnitTestDependencies, :app:mockableAndroidJar]
    打开Preferences->Build-Excecution-Deployment->BuildTools->Gra‌​dle,勾选Offline work
    参见//stackoverflow.com/questions/25629368/how-to-fix-android-studio-getting-stuck-executing-gradle-tasks

    8. Exception in thread "png-cruncher_5" java.lang.RuntimeException: Timed out while waiting for slave aapt process
    不知道原因,最终是通过修改SDK Build Tools为19.1.0、升级JDK由JDK7升至JDK8、增加环境变量SLAVE_AAPT_TIMEOUT=30等搞定的

    9. 如何修改SDK和JDK的路径
    在File->Project Structure里修改

    10. 修改Android Studio中java代码的编译级别
    打开File --> Project Structure-->app,修改Source Compatibility和Target Compatibility

    11.如何在使用gradle时增加--stacktrace参数
    Preferences->Build-Excecution-Deployment->Compiler
    增加--info或--debug,在解决报错时能看到更多的信息

    12. 报错aapt ..finished with non- zero exit value 1
    找不到原因,增加编译参数--info后发现有用的信息:invalid resource directory name: ..app\build\intermediates\res\merged\debug/values-b+sr+Latn

    13.invalid resource directory name: ..app\build\intermediates\res\merged\debug/values-b+sr+Latn
    不知道原因,将版本升级到21解决了。

    14. 编译时报找不到AppCompatActivity类的错误
    改为使用:compile 'com.android.support:appcompat-v7:22.2.1'
    同时将版本由21升级到22

    15. 生成apk时报错:Missing Gradle Project Information. Please check if the IDE successfully synchronized its state with the Gradle Project Model
    在工具栏里点击“Sync Project with Gradle Files”按钮

    16.导入某项目时报错Error:Gradle version 2.14.1 is required. Current version is 2.4. If using the gradle wrapper, try editing the distributionUrl in...
    打开Android Studio的File->Project Structure,点击Project,将Gradle version修改为2.14.1
    在/Applications/Android Studio.app/Contents/gradle下的确只有gradle-2.14.1

    25.如何修改生成的apk的名字
    //www.jianshu.com/p/93051c9e97fb
    Android Studio如何发布APK://chenfeicqq.iteye.com/blog/1889160

    26. 在gradle.properties中增加android.enableBuildCache=true,貌似能加快编译速度。

    posted @ 2016-10-13 21:25 leekiang 阅读(1134) | 评论 (0)编辑 收藏

    2015年3月2日

    参考dubbo里的NetUtils类

    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.util.Enumeration;
    import java.util.regex.Pattern;

    public class GetIP {
    public static void main(String[] args) {
    System.out.println(GetIP.getLocalAddress0().getHostAddress());
    }
    public static InetAddress getLocalAddress0() {
    ??????? InetAddress localAddress = null;
    ??????? try {
    ??????????? localAddress = InetAddress.getLocalHost();
    ??????????? if (isValidAddress(localAddress)) {
    ??????????????? return localAddress;
    ??????????? }
    ??????? } catch (Throwable e) {
    ??????????? System.out.println("Failed to retriving ip address, " + e.getMessage());
    ??????? }
    ??????? try {
    ??????????? Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
    ??????????? if (interfaces != null) {
    ??????????????? while (interfaces.hasMoreElements()) {
    ??????????????????? try {
    ??????????????????????? NetworkInterface network = interfaces.nextElement();
    ??????????????????????? Enumeration<InetAddress> addresses = network.getInetAddresses();
    ??????????????????????? if (addresses != null) {
    ??????????????????????????? while (addresses.hasMoreElements()) {
    ??????????????????????????????? try {
    ??????????????????????????????????? InetAddress address = addresses.nextElement();
    ??????????????????????????????????? if (isValidAddress(address)) {
    ??????????????????????????????????????? return address;
    ??????????????????????????????????? }
    ??????????????????????????????? } catch (Throwable e) {
    ??????????????????????????????????? System.out.println("Failed to retriving ip address, " + e.getMessage());
    ??????????????????????????????? }
    ??????????????????????????? }
    ??????????????????????? }
    ??????????????????? } catch (Throwable e) {
    ??????????????????????? System.out.println("Failed to retriving ip address, " + e.getMessage());
    ??????????????????? }
    ??????????????? }
    ??????????? }
    ??????? } catch (Throwable e) {
    ??????????? System.out.println("Failed to retriving ip address, " + e.getMessage());
    ??????? }
    ??????? System.out.println("Could not get local host ip address, will use 127.0.0.1 instead.");
    ??????? return localAddress;
    ??? }
    ??? private static boolean isValidAddress(InetAddress address) {
    ??????? if (address == null || address.isLoopbackAddress())
    ??????????? return false;
    ??????? String name = address.getHostAddress();
    ??????? return (name != null
    ??????????????? && ! ANYHOST.equals(name)
    ??????????????? && ! LOCALHOST.equals(name)
    ??????????????? && IP_PATTERN.matcher(name).matches());
    ??? }
    ?? ?
    ??? public static final String LOCALHOST = "127.0.0.1";

    ??? public static final String ANYHOST = "0.0.0.0";
    ?? ?
    ??? private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$");
    }

    posted @ 2015-03-02 06:29 leekiang 阅读(407) | 评论 (0)编辑 收藏

  • 未来三天全国天气预报:台风给东南沿海带来大风 2019-03-18
  • 人民日报评论员:毫不动摇把党建设得更加坚强有力 2019-03-18
  • 内蒙古赤峰市原副市长于文涛接受纪律审查和监察调查 2019-03-15
  • 谷歌因为这些原因,选择加纳建立其在非洲首个人工智能中心 2019-03-14
  • 陈光标嘱咐小儿子:捐两毛钱也要到处说[图] 2019-03-14