Программная загрузка APK с Google Drive не работает - PullRequest
0 голосов
/ 26 октября 2018

При нахождении случайных apk онлайн через URL, я могу успешно загрузить и установить их, пользователю предлагается спросить, подходит ли он к установке.Но когда я загружаю те же самые apk на диск Google, а затем запускаю URL-адрес загрузки с Google, apk не работает.Я получаю «При синтаксическом анализе пакета возникла проблема» на экране устройства.Я поставил журнал, чтобы увидеть, сколько данных загружается.И, похоже, что apk, загружаемый с диска Google, едва ли соответствует размеру того, каким должен быть apk.Около 50 КБ вместо 4 МБ.Я вижу много вопросов в Интернете об этом, но никто не говорил о том, что Google Play не отправляет полный файл.Я что-то упускаю, чтобы загрузить полный apk с диска Google?вот код,

private void downloadApk(){

  //  checkVersion();
    String extStorageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();
    File folder = new File(extStorageDirectory);
    folder.mkdirs();
    File file = new File(folder, "app-debug.apk");
    try {
        file.createNewFile();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
    DownloadApkTask downloadApkTask = new DownloadApkTask(APKURL,file);
    downloadApkTask.execute();
}

public class DownloadApkTask extends AsyncTask<String, Void, Void> {

    String fileURL;
    File directory;
    public DownloadApkTask(String fileURL,File directory) {
        this.fileURL = fileURL;
        this.directory = directory;
    }

    @Override
    protected Void doInBackground(String... params) {

        Log.v("DO in Back started","Started");
        try {

            FileOutputStream f = new FileOutputStream(directory);
            URL u = new URL(fileURL);
            HttpURLConnection c = (HttpURLConnection) u.openConnection();
            c.setRequestMethod("GET");
            c.connect();
            InputStream in = c.getInputStream();
            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = in.read(buffer)) > 0) {
                Log.v("PROGREsS", String.valueOf(len1));
                f.write(buffer, 0, len1);
            }
            f.close();
            directory.setReadable(true,false);
        } catch (Exception e) {
            System.out.println("exception in DownloadFile: --------"+e.toString());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void stringReturn) {
        super.onPostExecute(stringReturn);
        File file = new   File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/app-debug.apk");

        Log.v("STARTING INSTALLATION","-----");
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
        startActivity(intent);

    }
}

1 Ответ

0 голосов
/ 29 октября 2018

На основании этой страницы при установке приложения возникает ошибка синтаксического анализа.

Когда вы пытаетесь установить приложение внезапно, появляется всплывающее окно с сообщением "существует проблема с анализом пакета" , что означает, что приложение не может быть установлено из-за apk parser , т. Е. вопрос разбора .

Существует несколько причин возникновения этой ошибки синтаксического анализа, и определенно одна из них ответственна за вашу ошибку синтаксического анализа:

  • Файл может быть загружен не полностью.
  • Приложение может не подходить для вашего оборудования или версии ОС.
  • Из-за настроек безопасности
  • Поврежденный файл APK.

Выполните шаги, показанные ниже, для исправления ошибки разбора Android на мобильных устройствах:

  • Проверьте файл APK приложения.

    • Измените файл Andriomanifest.xml на настройки по умолчанию, а также проверьте имя этого файла. Если исходное имя файла «aap.apk» и вы переименовали его в «app1.apk», то это также может вызвать ошибку. Если у вас есть некоторые знания о кодировании, посмотрите код приложения, если есть проблемы с кодированием.
  • Настройки безопасности.

    • В целях безопасности в телефоне есть встроенная настройка, которая не позволяет устанавливать приложения от сторонних поставщиков, кроме мобильных приложений, предоставляемых Play Store. Не устанавливайте приложение с ненадежного веб-сайта. Это может реально рисковать вашим мобильным телефоном.
  • Включить отладку по USB.

    • Перейдите в настройки >> Прокрутите вниз, затем, наконец, вы увидите опцию «Об устройстве» и выберите ее.
    • Ищите опцию «номер сборки».
    • Нажмите на «Номер сборки» 7 раз.
    • Вы увидите сообщение «Вы теперь разработчик».
    • Как только вы вернетесь к настройкам
    • Выберите «Параметры разработчика».
    • Галочка "Отладка по USB".
  • Поврежденный файл приложения.

    • Ошибка синтаксического анализа также может быть вызвана поврежденным файлом. В этом случае загрузите новый, но полный файл APK и попробуйте снова установить его снова. Это может помочь вам.
  • Отключить антивирус.

    • Если у вас установлены такие приложения, как антивирусные и чистые приложения, это также может помешать установке некоторых приложений. Это предотвращение связано с целью безопасности телефона. Они блокируют подозрительные загрузки с ненадежных сайтов. Если вы действительно хотите установить это приложение, то временно отключите антивирус.
  • Очистить кеш-файлы cookie игрового магазина.

    • Открыть магазин Google Play
    • Выберите боковую панель и выберите опцию «настройки».
    • В общих настройках вы обнаружите «очистить историю локального поиска».
...