發表文章

目前顯示的是 十一月, 2012的文章

Google Play 出現 [RPC:S-5:AEC-0] 錯誤

今天終於等到 Android 4.2 OTA 更新,不過升級完後開啟 Google Play 下載 App 時卻出現下面這個錯誤。

Update for "***" could not be downloaded due to an error.
(Error retrieving information from server. [RPC:S-5:AEC-0])

查了一下,解決步驟如下:
1.到"設定"(Settings) -> "帳戶"(ACCOUNTS) -> "Google" -> 選擇你的帳戶 -> 按右上角的 Menu 選擇"移除帳戶"(Remove account)
2.重開機 Reboot your device.
3.再回到"設定"(Settings) -> "帳戶"(ACCOUNTS) -> "+ 新增帳戶"(+ Add account) -> "Google",然後重新輸入你的帳戶資料即可。

解決 NetworkOnMainThreadException 的問題

好一陣子沒寫網路相關的程式了,最近有個專案剛好有連網的需求。好吧,把以前的程式拿出來用,但發現在 Android 2.3 的裝置運行正常,在 Android 4.0 的裝置就會出現 NetworkOnMainThreadException 這個錯誤。查了一下原來從 Android 3.0 開始,Thread Policy 加強了限制,只要嘗試在主執行緒中進行網路操作,就會產生這個錯誤。

解決方式有幾個:
1. 把網路操作從主執行緒中移走,你可以自己再開一個 Thread,或使用 AsyncTask 來執行。

2.在 onCreate() 中加入下列程式,透過 StrictMode 重新設定 ThreadPolicy。
if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) { StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() // or .detectAll() for all detectable problems .penaltyLog() .build()); }
3.把 AndroidManifest 中的 android:targetSdkVersion 設定成 9,也可以暫時解決,但不建議。

最好的方式還是第一種,能避免耗時的網路操作阻礙主執行緒工作,或產生 ANR 錯誤,我想這也是設計此例外的原因。