簡體   English   中英

Android-下載APK文件並將其保存在手機存儲中(不在SD卡中)

[英]Android - Download and save APK files in Phone Storage (Not in SD card)

我試圖從服務器下載一個APK文件並將其保存在“手機存儲”中

以下是我使用的代碼:

            String apkLink = "http://10.1.20.53/files/test.apk";
            URL url = new URL(apkLink);
            HttpURLConnection c = (HttpURLConnection) url.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();

            context.getDir("test.apk", Context.MODE_WORLD_WRITEABLE);
            FileOutputStream fos = context.openFileOutput("app_test.apk", Context.MODE_WORLD_WRITEABLE);

            InputStream is = c.getInputStream();
            fileSize = c.getContentLength();
            byte[] buffer1 = new byte[1024];
            int len1 = 0;
            int total = 0;
            while ((len1 = is.read(buffer1)) != -1) {
                total += len1;
                percentage = (int)(total*100/fileSize);
                publishProgress();
                fos.write(buffer1, 0, len1);
            }
            fos.close();
            is.close();

相同的代碼可以很好地處理XML文件。 (當我將XML文件下載到手機內存時)。

有人可以幫我弄這個嗎?

謝謝


其實我知道原因了

context.getDir(“ test.apk”,Context.MODE_WORLD_WRITEABLE); 代碼行創建一個名為“ data / data / package_name / app_test.apk”的目錄

但是FileOutputStream fos = context.openFileOutput(“ app_test.apk”); 創建一個名為data / data / package_name / files / app_test.apk的目錄

我試圖從data / data / package_name / app_test.apk目錄中讀取文件。

無論如何,現在我將使用以下代碼執行該文件,

File f = new File(getFilesDir()+ "/app_test.apk");

intent.setDataAndType(Uri.fromFile(f) , "application/vnd.android.package-archive");
startActivity(intent);

但這給了我一個解析錯誤信息。

誰能想到一種解決方案?

謝謝。

我已經在這里回答了類似的問題。 考慮到您的問題,我有幾種不同的意見,為什么它不起作用。

  1. 您的應用程序將apk下載到其專用文件夾中,並且PackageManager可能沒有讀取此文件夾的權限。 嘗試將應用程序下載到sdcard上並運行它。
  2. 也許您的.apk文件未正確簽名。 您是否使用生成的簽名對其進行了簽名,或者是否使用默認的測試簽名導出了文件?
  3. 如果您在真實設備上進行測試,請檢查是否可以從其他來源安裝文件(不僅限於Google Play市場)
  4. 我記不清了,但也許要調用PackageManager來安裝您需要許可的應用程序。

創建文件時,請嘗試使用Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM