發表文章

目前顯示的是 十一月, 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的問題

好一陣子沒寫網路相關的程式了,最近有個專案剛好有連線Server的需求。好吧,把以前的程式拿出來用,但發現在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錯誤,我想這也是設計此例外的原因。