<noframes id="395jp"><noframes id="395jp"><video id="395jp"><video id="395jp"></video></video>
<i id="395jp"><font id="395jp"><delect id="395jp"></delect></font></i>
<nobr id="395jp"></nobr><noframes id="395jp"><noframes id="395jp"><dl id="395jp"></dl><video id="395jp"></video><noframes id="395jp"><dl id="395jp"></dl>
<video id="395jp"><video id="395jp"><dl id="395jp"></dl></video></video> <nobr id="395jp"><nobr id="395jp"><meter id="395jp"></meter></nobr></nobr>
<video id="395jp"></video><nobr id="395jp"></nobr>
<video id="395jp"></video>

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 閱讀(821) | 評論 (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.


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

posted @ 2016-12-21 00:24 leekiang 閱讀(1176) | 評論 (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

http://www.cnblogs.com/wingyip/p/5426477.html JsBridge實現Javascript和Java的互相調用
http://blog.csdn.net/sk719887916/article/details/47189607 
 Android 利用WebViewJavascriptBridge 實現js和java的交互
http://www.jb51.net/article/37208.htm Android在其他線程中更新UI線程的解決方法

posted @ 2016-11-24 16:19 leekiang 閱讀(345) | 評論 (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");

參考:
http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html
http://www.cnblogs.com/tornadomeet/archive/2012/07/28/2613617.html 從一個activity跳轉到另外一個activity

posted @ 2016-10-26 00:54 leekiang 閱讀(237) | 評論 (0)編輯 收藏

2016年10月25日

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

參考:
讀懂 Android 中的代碼混淆 http://droidyue.com/blog/2016/07/10/understanding-android-obfuscated-code-by-proguard/

posted @ 2016-10-25 23:41 leekiang 閱讀(360) | 評論 (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有何區別。

參考:http://www.cnblogs.com/and_he/archive/2011/06/01/2067106.html Android中全屏或者取消標題欄

posted @ 2016-10-25 22:38 leekiang 閱讀(503) | 評論 (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 閱讀(445) | 評論 (0)編輯 收藏

2016年10月21日

1.public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url);
       return true;
  }
重寫shouldOverrideUrlLoading方法,返回true表示點擊鏈接是在當前webview里打開,而不是調用瀏覽器打開


WebViewClient與WebChromeClient的區別 http://blog.csdn.net/jackyhuangch/article/details/8310033
Android中WebView攔截替換網絡請求數據http://droidyue.com/blog/2014/11/23/block-web-resource-in-webview/
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/1010/1569.html android WebView全面總結
自定義可下拉刷新的WebView http://www.voidcn.com/blog/Moy01/article/p-4587219.html
android webview遠程調試http://www.cnblogs.com/carlos-guo/p/3920915.html
http://www.udpwork.com/item/13349.html  WebView處理網頁位置請求
http://www.cnblogs.com/over140/archive/2013/03/07/2947721.html 帶進度條的webview
http://blog.csdn.net/u014400200/article/details/38511419 webview處理視頻
http://blog.csdn.net/jackyhuangch/article/details/8310033 關于android WebViewClient和WebChromeClient
http://www.weblog-life.net/entry/2016/03/12/080300 webview如何使用google地圖,日本人寫的
http://stackoverflow.com/questions/5329662/android-webview-geolocation  
https://github.com/delight-im/Android-AdvancedWebView 這個支持地理定位

posted @ 2016-10-21 21:43 leekiang 閱讀(328) | 評論 (0)編輯 收藏

2016年10月13日

1. Android Studio2.2在mac下啟動報錯
找不到原因,改為使用Android Studio 2.1.3
下載地址:http://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
參見http://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的名字
http://www.jianshu.com/p/93051c9e97fb
Android Studio如何發布APK:http://chenfeicqq.iteye.com/blog/1889160

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

posted @ 2016-10-13 21:25 leekiang 閱讀(3723) | 評論 (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 閱讀(623) | 評論 (0)編輯 收藏

久久一级片
<noframes id="395jp"><noframes id="395jp"><video id="395jp"><video id="395jp"></video></video>
<i id="395jp"><font id="395jp"><delect id="395jp"></delect></font></i>
<nobr id="395jp"></nobr><noframes id="395jp"><noframes id="395jp"><dl id="395jp"></dl><video id="395jp"></video><noframes id="395jp"><dl id="395jp"></dl>
<video id="395jp"><video id="395jp"><dl id="395jp"></dl></video></video> <nobr id="395jp"><nobr id="395jp"><meter id="395jp"></meter></nobr></nobr>
<video id="395jp"></video><nobr id="395jp"></nobr>
<video id="395jp"></video>