2

У меня есть функция в моем приложении, которая позволяет пользователю загружать новую версию.
Но моя проблема в том, когда я начинаю намерение, которое должно начать proccess установки есть сообщение:Ошибка Parsing при загрузке и запуске файла .apk

ошибка синтаксического анализа. Была проблема разбора пакета

Это мой код

Button button; 
String urlApp = "example.com/app.apk" 
String fileName = "app.apk"; 
DownloadManager downloadManager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.button); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      File file = new File(Environment.DIRECTORY_DOWNLOADS, fileName); 
      if (file.exists()){ 
       boolean deleted = file.delete(); 
       Toast.makeText(getApplicationContext(), "Deleted", Toast.LENGTH_SHORT).show(); 
      } 

      downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
      DownloadManager.Request request = new DownloadManager.Request(Uri.parse(urlApp)); 
      request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); 
      request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
      request.setTitle("Click to update"); 
      downloadManager.enqueue(request); 
      registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); 

     } 
    }); 

} 

private void openFile() { 
    Intent install = new Intent(Intent.ACTION_VIEW); 
    install.setDataAndType(Uri.fromFile(new File(Environment.DIRECTORY_DOWNLOADS+"/"+fileName)), 
      "application/vnd.android.package-archive"); 
    startActivity(install); 
} 

BroadcastReceiver onComplete = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     openFile(); 
    } 
}; 

} 

Это просто для .apk файлов, файлы .txt работать нормально. Ошибка logcat не возникает. Удаление также не работает, но это не моя основная проблема.

Заранее спасибо: D

Извините, если это глупый вопрос, но это мой первый раз работает с менеджером загрузки

+0

Это все так странно ... Google Play Маркет обрабатывает обновления для вас. Итак, зачем использовать другой, настраиваемый, ненадежный метод? –

+0

Конечно, я мог бы это сделать, но я хочу сделать это сам – Dan

+0

Конечно, это может быть отличное упражнение. Но и большая трата времени, если вы хотите быть продуктивным! –

ответ

0

Хорошо, я наконец-то решил, что

Вместо:

install.setDataAndType(Uri.fromFile(new File(Environment.DIRECTORY_DOWNLOADS+"/"+fileName)), 
     "application/vnd.android.package-archive"); 

я использовал

install.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/"+fileName)), 
      "application/vnd.android.package-archive"); 
0

Я сталкивался с той же проблемой ранее.

Ознакомьтесь с минимальным уровнем API для новой версии приложения и уровня API устройства, которое вы используете.

+0

MinSdkVersion - 19, targetSdkVersion - 23, а мое устройство - также skdVersion 23 – Dan