發表文章

目前顯示的是 3月, 2016的文章

如何讓Android App按Home鍵之後再次開啟仍在之前的頁面

通常在Android的世界裡,只要按下App的 icon都會從程式進入的第一個頁面(以下簡稱首頁)啟動,所以不論當你操作App進入到了哪一層、哪個頁面,只要是在桌面再次按下了App的icon就會又回到首頁。 上述的流程可以透過開啟App進入到某一層之後,按Android手機的Home鍵,再按下App icon,就會了解發生了什麼事。 按下App icon就是開啟首頁對於Android使用者一直以來是再習慣也不過的事,但對於iOS的使用者就覺得不對勁了。 原來在iOS的世界裡,App開啟之後,如果按了Home鍵,下次再按了桌面上的icon還是會停留在A pp上次最後的頁面,除非iOS的使用者透過切換程式的方式把該App刷掉(關掉),下次按下icon才會開啟App的首頁。 那麼,如果有天Android工程師收到的需求就是要如同iOS的行為一樣時,該怎麼辦呢? 上網查了一下,解決的方法只要在Activity的onCreate()生命週期裡加入下面的程式碼即可以解決 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) { finish(); return; } //其他原本在此生命週期執行的程式碼... //... //... } Reference: How to return to the latest launched activity when re-launching application after pressing HOME?

Android如何實作強制App版本更新

App上架了一段時間,透過Google Play Console常常會發現有不少的使用者仍然一直停留在舊版本不更新,雖然Android預設會自動更新用戶安裝的App版本,但也是會有使用者把自動更新的功能關閉,如此便會造成App加了新功能用戶無法體驗到或是當初沒考慮到的漏洞沒辦法補起來,基於此,強烈建議App在規劃的初期就要把「強制使用者更新App」的功能實作之後才上架。 實作的方式不難,大致上依照以下幾個流程即可達成: App開啟時檢查版本與Google Play上的版本是否一致 如果不一致就彈出對話框讓使用者執行前往該App的Google Play連結 限制使用者企圖操作不進行版本更新的行為 本例以Volley實作,所以在Callback的部份加上判斷版本是否相符的程式碼: StringRequest appVersion = BaseApi.appVersion(new ResponseListener() { @Override public void onError(VolleyError error) { super.onError(error); intoNextPage(); //有可能網路出錯但仍需讓使用者可以進入下一個頁面 } @Override public void onResponse(String str) { super.onResponse(str); Pattern pattern = Pattern.compile("\"softwareVersion\"\\W*([\\d\\.]+)"); Matcher matcher = pattern.matcher(str); if (matcher.find()) { if (!ValueUtility.getCurrentVersionName().equals(matcher.group(1))) { newVersionDialog.show(); } else {