android 軟件apk自動更新實現注意點!!


1,解析xml時的NetWorkOnMainThread問題

代碼:這里要注意的點就是在訪問服務器網絡時,不能將InputStream直接返回,因為若直接返回給主線程操作,很可能子線程的InputStream還在獲取字節流,這時候就會導致這個UI線程訪問網絡異常,所以不能直接返回這個InputStream,直接在子線程里

操作這個輸入流,然后將操作的結果返回。

private class AsyncTask_ConnVersion extends AsyncTask<String, Void, ConnData>
    {

        @Override
        protected ConnData doInBackground(String... params) {
            URL serviceAddrUrl;
            HttpURLConnection conn;
            String urlStr=params[0];
            try {
                serviceAddrUrl = new URL(urlStr);
                conn = (HttpURLConnection) serviceAddrUrl.openConnection();
                conn.connect();
                int len=conn.getContentLength();
                InputStream in=conn.getInputStream();
                HashMap<String, String> hashMap=new ParseXmlService().parseXml(in);
                connDataInfo=new ConnData(hashMap, len); 
                //關閉連接
                conn.disconnect();
                return connDataInfo;
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            return null;
        }
        
    }

 

2,FileNotFound

apk在服務器上找不到,路徑都對就是文件無法訪問到,這個問題我是看別人解決的:URL請求的具體實現,網上各種各樣,沒有什么好糾結的了。URL路徑完全沒有問題,替換成同目錄下的其他類型文件,可以找到文件,唯獨找不到文件。

 

找了幾個小時,悄然發現,原來和IIS的設置有關系,我這邊使用的測試服務器為IIS,IIS默認限制了apk類型文件的下載,所以輸入流拿不到文件數據,提示“找不到文件”。

 

最終解決辦法:

1、在管理工具里打開Internet 信息服務(IIS)管理器。然后選擇需要配置的網站。

2、右側的界面中會顯示該網站的所有功能配置,我們選擇並點擊進入“MIME類型”。

3、在右側的操作區選擇點擊“添加”MIME。

4、在彈出的添加窗口里的文件擴展名輸入:APK

 

在MIME類型輸入:application/vnd.android.package-archive

按確定。

3,版本更新時已經下載好后的apk無法安裝,安裝不上,代碼沒有問題,后來發現必須以發布的方式運行原始的apk,然后更新下下來最新的apk進行安裝。即要導出當前測試的apk而不能直接在eclipse上測試更新安裝這個。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM