格式化

廣告

廣告2

2013年7月29日 星期一

[Android app開發基本概念] 偵測網路是否連線狀態

在Android手機中判斷是否連網可以通過 ConnectivityManager 類別的getActiveNetworkInfo()方法判斷,首先獲取網路通訊類的實例 :
ConnectivityManager cm =(ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);


再來可以使用cm.getActiveNetworkInfo().isAvailable(); 來返回是否有效,如果為True則表示當前Android手機已經連網,可能是WiFi或GPRS、HSDPA等等,具體的可以通過ConnectivityManager 類別的getActiveNetworkInfo()方法判斷詳細的接入方式需要注意的是有關調用需要加入以下許可權,同時在一些網路超時的時候也可以檢查下網路連接是否存在,以免浪費手機上的電力資源。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

2013年7月24日 星期三

[Android SDK特色教學] ListView清除/移除所有資料

ListView要更新資料要如何清除原來所有資料?
如何把原來的listview列表中的值先清空?

只要把adapter設為空便可:
   listView.setAdapter(null);

2013年7月23日 星期二

[Android程式範例] 產生和解碼二維條碼(QRCode)與一維條碼(CODE39)

[Android程式範例] 產生和解碼二維條碼(QRCode)與一維條碼(CODE39)

有的應用程式需要將一段字符加密為一個二維條碼,我們可以用一個現成的開源程式碼來幫我們搞定二維碼,這個框架就是Google 自家的Zxing,它已經封裝好了對一維碼、二維碼的編碼和解碼的功能。

2013年7月21日 星期日

[Android SDK特色教學] NetworkOnMainThreadException

在Android 3.0版本之後
對網路存取增加了一些限制不能在onCreate()方法中直接使用網路存取


所以要更改一下作業系統關於執行的政策:

[Android app開發基本概念] https post連線請求建立方法教學


Https與Http類似,只不過Https一般是通過post請求服務器,但是Https與http不同的是Https與服務器會話是處於連接狀態。http則發送請求後連接就會斷開。

另外使用HttpsURLConnection時需要實現HostnameVerifier 和 X509TrustManager,這兩個實現是必須的,要不會報安全驗證異常。然後初始化X509TrustManager中的SSLContext, 為javax.net.ssl.HttpsURLConnection設置默認的SocketFactory和HostnameVerifier。

之後最好要用UrlEncodedFormEntity()方法告訴伺服器 ,你傳進的那些參數值字串的編碼為何。預設的編碼是 ISO-8859-1,不傳的話會把你的傳入的UTF-8中文搞亂了。

 先自己重寫一個SSLSocketFactory類別:

[Android app開發基本概念] ListView中getChildAt()的使用範例


在很多時候ListView列表數據不需要全部刷新,只需刷新有數據變化的那一條,這時可以用getChildAt(index)獲取某個指定position的view,並對該view進行刷新。

注意:在ListView中,使用getChildAt(index)的取值,只能是當前可見區域(列表可滾動)的子項!
  • 即取值範圍在 >= ListView.getFirstVisiblePosition() &&  <= ListView.getLastVisiblePosition();
  1. 所以如果想獲取其他的部分將會出現返回Null值空指針問題;
  2. getChildCount跟getCount獲取的值將會不一樣(數量多時);
  3. 如果想更新某一行數據,需要配合ListView的滾動狀態使用,一般不滾動時才加載更新數據
範例程式: