Не удалось загрузить файл.apk с удаленного сервера в Android

Я хочу загрузить файл .apk с моего веб-сервера, но я получаю java.io.FileNotFoundException: http://xxx/mygames/myapks/demo.apk все время.

Но файл присутствует в этом URL Ниже мой код, что я делаю.

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;

public class InstallAPK extends AsyncTask<string,void,void> {

 private Context context;
 public void setContext(Context contextf){
 context = contextf;
 }

 @Override
 protected Void doInBackground(String... arg0) {
 try {
 URL url = new URL(arg0[0]);
 HttpURLConnection c = (HttpURLConnection) url.openConnection();
 c.setRequestMethod("GET");
 c.setDoOutput(true);
 c.connect();

 File sdcard = Environment.getExternalStorageDirectory();
 File myDir = new File(sdcard,"Android/data/com.sush19.app/temp");
 myDir.mkdirs();
 File outputFile = new File(myDir, "temp.apk");
 if(outputFile.exists()){
 outputFile.delete();
 }
 FileOutputStream fos = new FileOutputStream(outputFile);

 InputStream is = c.getInputStream();

 byte[] buffer = new byte[1024];
 int len1 = 0;
 while ((len1 = is.read(buffer)) != -1) {
 fos.write(buffer, 0, len1);
 }
 fos.flush();
 fos.close();
 is.close();

 Intent intent = new Intent(Intent.ACTION_VIEW);
 intent.setDataAndType(Uri.fromFile(new File(sdcard,"Android/data/com.sush19.app/temp/temp.apk")), "application/vnd.android.package-archive");
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error!
 context.startActivity(intent);


 } catch (Exception e) {
 Log.e("UpdateAPP", "Update error! " + e.getMessage());
 }
 return null;
 }
}
</string,void,void>

On button Click I'm calling as follow

InstallAPK downloadAndInstall = new InstallAPK();
downloadAndInstall.setContext(getApplicationContext());
downloadAndInstall.execute("http://xxx/mygames/myapks/demo.apk");

Я также попытался с текстовым файлом, потому что я просто загрузил файл demo.txt в http://xxx/mygames/myapks/demo.txt Я получаю такое же Исключение, но когда я просматриваю этот URL-адрес файла demo.txt, он открывается в браузере. Что мне нужно сделать, чтобы загрузить файл.apk с веб-сервера. Я также включил все необходимые разрешения

Я получаю вышеупомянутое исключение:

InputStream is = c.getInputStream();
2 ответа

Я думаю, что ваша версия sdk для Android будет 4.x, возможно, вы можете попытаться удалить код строки c.setDoOutput(true).


Это не ваша ошибка кода. Это ошибка сервера. просто попробуйте нажать URL-адрес из браузера.

licensed under cc by-sa 3.0 with attribution.