2013年5月22日 星期三

Android :: 偵測網路狀態

有些程式必須透過網路來執行某些動作,在執行這類網路相依的動作之前,最好先判斷目前的網路連線狀態,這樣可以免掉後續許多的防範機制,相關程式碼如下:

private boolean isInternetConnected( )
{
   ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService     
   (CONNECTIVITY_SERVICE); 

   NetworkInfo networkInfo= connectivityManager .getActiveNetworkInfo(); 

   if( networkInfo != null && networkInfo.isConnected( ) )
  { 
      return true; 
   }
  else
  { 
      return false; 
  }   
}

補充:
記得在AndroidManifest.xml裡加入

Android :: 生命週期 lifecycle

Android 跟 一般windows的程式不一樣,他引進了所謂的lifecycle的概念,針對程式而言,最明顯的不同在於您所設計的程式,有可能被系統自動終結掉,這對於傳統的程式設計師或使用者來說是很不可思議的事,以前,除非是程式自己結束(正常或不正常),不然是不會自動消失的,Android系統則完全掌控了程式的生殺大權,當記憶體不足或其他原因,系統是可以無責的將您的程式給結束掉的,後來,Win8也導入lifecycle。

Android的lifecycle分為幾個階段,用程式來看就一目了然了:

public class Activity extends ApplicationContext {
   protected void onCreate(Bundle savedInstanceState);
   protected void onStart();
   protected void onRestart();
   protected void onResume();
   protected void onPause();
   protected void onStop();
   protected void onDestroy();
  }

底下是擷取自Android官方網站的流程圖:


Android :: 非同步線程 AsyncTask

網路上很多AsyncTask的說明和例子,但我相信應該有很多初學者應該都有看沒有懂, 如果您是已經看過網路上的例子但還是不會用的話, 可以看看以下的例子, 這篇文章的主要目的, 是要您能真的用得出來, 實作成功了, 再去查相關資料, 成就感就不同了! 如果您有以下的需求: 事件2必須等待事件1完成後再做的話, 您就有AsyncTask實作的動機了。 首先,設計一個名子叫做MyTask的class,其他照抄。 doInBackground裡面放的就是要做的事件1, 而onPostExecute裡面放的就是事件2, class實作結束!!! class MyTask extends AsyncTask{ @Override protected voiddoInBackground(Integer... params) { 事件1; } @Override protected void onPostExecute(String result) { 事件2; super.onPostExecute(result); } } 再來,就是在MainThread裡面呼叫了, 可以在OnCreate裡面做: MyTask myTask = new MyTask(); myTask(100); 結束了!!

Android :: 對話方塊

對話方塊,和之前介紹過的Toast一樣,是用來通知使用者的,但要注意其應用情境,有些區別,這邊就不多說了,google上資料應該很多。 Android的對話方塊實作也是很簡單,以下照慣例,用程式碼來解說: AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this); 首先是產生一個AlertDialog實體,這個實體要出現在哪裡呢?一般來說就是這段程式碼鎖在的Activity,預設就是MainActivity.this。 dialog.setTitle("關於 dialog"); 這是設置dialog標題的用法。 dialog.setMessage("message content"); 這是設置dialog內容的用法。 dialog.show(); 這是最後一個步驟了,就是把dialog給show出來。 結束。

coupon

  • 1129
  • http://www.kfcclub.com.tw/Menu/Coupon/
  • http://campaign.mcdonalds.com.tw/Campaign_20130828_Coupon/
  • https://docs.google.com/document/d/1oau68PPEY5jk0UJBfPgzkdbpaEwq7UDIxddNsHqpu1M/edit?usp=sharing
  • http://www.mos.com.tw/index.aspx
  • https://docs.google.com/document/d/16cU9-ieaNONMNd4bQtHkD_RvYAQPBUzcquogpe0WhSU/pub
  • http://www.burgerking.com.tw/news.php?id=208
  • https://docs.google.com/document/d/1hkW58Vwiz-Wi4wPSmg7la7b3I3cOjGmYSXHAgjcFIo8/edit?usp=sharing
  • http://www.pec21c.com.tw/ctmNewsList.html?leftMenuId=2800
  • http://www.tkkinc.com.tw/news_1.asp?n=1
  • http://www.twsubway.com/www/include/index.php?Page=2
  • https://docs.google.com/document/d/1mVc9c2Bw8cDMf9JO6p1syRRiFJjLFZ7c2wxn3NLrpQg/pub
  • http://www.coldstone.com.tw/04_news.asp
  • https://docs.google.com/document/d/1dqL_wtma82-nxqS9oMU46BplwmH-aNW6Qykm83OAqSw/pub
  • https://docs.google.com/document/d/1dqL_wtma82-nxqS9oMU46BplwmH-aNW6Qykm83OAqSw/edit?usp=sharing
  • http://www.starbucks.com.tw/stores/allevent/stores_allevent.jspx
  • https://docs.google.com/document/d/1ghWc4OmNiibSI-l0JywSZweV3IJs-eudEpzB-7naW_w/pub
  • https://docs.google.com/document/d/1ghWc4OmNiibSI-l0JywSZweV3IJs-eudEpzB-7naW_w/edit?usp=sharing
  • https://www.mrbrown.com.tw/news/index.aspx
  • https://docs.google.com/document/d/1x4M73_TqoipjRFnx5NsbNpphN-_3oPNLFDIVk-PF-Xk/pub
  • http://www.85cafe.com/newsactivity.php
  • https://www.sushiexpress.com.tw/news
  • http://www.sushiexpress.com.tw/qrcode/view.php?id=209
  • http://www.pizzahut.com.tw/promotions/#pwds
  • https://docs.google.com/document/d/1xA3auHeUnYxAZeAYxElXkbVXYBgoGd2n5ICY7gcCVzo/pub
  • https://docs.google.com/document/d/1xA3auHeUnYxAZeAYxElXkbVXYBgoGd2n5ICY7gcCVzo/edit?usp=sharing
  • http://www.dominos.com.tw/Phone/PhoneHome.aspx
  • https://www.0800076666.com.tw/Info/InfoSets
  • http://www.carrefour.com.tw/promo-catalogs
  • http://www.pxmart.com.tw/px/edmindex.px?id=3666#features/5

2013年5月21日 星期二

Android :: 開啟程式Internet permission

在設計Android程式時,有些存取Internet的程式法,需要事先開啟Internet Permission,否則會出現Internet Permission Deny的Exception,要如何開啟程式的Internet Permission,很簡單,只要將以下的程式碼:



加入到 AndroidManifest.xml 檔案中,記得,這句必須在 中間,且自己為root node。

2013年5月19日 星期日

(Android) 新增頁面

以下解說如何新增一個名為NewActivity的頁面,需要準備的工作有:

(1). 產生需要的檔案: NewActivity.java 及 NewActivity.xml
       在NewActivity.java的OnCreate( )加入: setContentView(R.layout.NewActivity); 


(2). 在 AndroidManifest.xml 裡加入:
 
     


(3). 在欲連結到NewActivity的頁面裡,加入對應的程式碼,使之可以連結到NewActivity:
 
    Intent intent = new Intent();
    intent.setClass(MainActivity.this, NewActivity.class);
    startActivity(intent);


可以把(3)放到一個Button的Onclick事件裡,就可以很容易的看出結果了。