Как установить новый apk со всеми разрешениями и с помощью FileProvider?

#android

Вопрос:

Я обновляю свое приложение, когда оно является старой версией, так как оно сравнивает версию с последней версией приложения сервера(Firebase). Поэтому я использую Менеджер загрузок и использую поставщика файлов со всем необходимым, дело в том, что при загрузке приложение открывает его, но оно сразу же закрывается, и пользователь не может установить обновление. Он не выдает ошибку, он просто открывается и закрывается очень быстро. Загрузка работает, это просто намерение открыть ее. Манифест:

   <uses-permission android:name="android.permission.INTERNET"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 <uses-permission  android:name=" android.permission.REQUEST_INSTALL_PACKAGES"/>
 

Поставщик:

  <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.example.multilevel.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
    </provider>
 

Намерение:

   if(cursor.moveToFirst()){
            var columnIndex = cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)

            if(DownloadManager.STATUS_SUCCESSFUL == cursor.getInt(columnIndex)){

                var uriString=cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))
                var file=File(uriString)
                println(file)
                val f = FileProvider.getUriForFile(context!!,context!!.applicationContext.packageName   ".provider",file)

                var pantallaInstall=Intent(Intent.ACTION_VIEW)

                pantallaInstall.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
                pantallaInstall.flags = Intent.FLAG_ACTIVITY_NEW_TASK
                pantallaInstall.setDataAndType(f,"application/vnd.android.package-archive")
                context?.startActivity(pantallaInstall)


                Log.e("msj Descarga", "sin problemas")
                Toast.makeText(context, "Descargado", Toast.LENGTH_LONG)
            }
        }
 

Комментарии:

1. Используйте регистрацию. Это твой uri. Выбросьте класс файла и файлообменник. Ты неправильно их используешь.

2. pantallaInstall.type=Такая регистрация??? он выдает ошибку, вызванную: android.content. ActivityNotFoundException: Не найдено действия для обработки намерения { действие=android.намерение.действие. ТИП ПРЕДСТАВЛЕНИЯ=файл:///хранилище/эмулируется/0/Android/данные/com.пример.многоуровневый/файлы/хранилище/Naturezavital-6.apk flg=0x1 }

3. Нет, не так, конечно.

4. можете ли вы сказать мне, пожалуйста, что я учусь этому самостоятельно, и документация неясна

5. Замените f на uriString. Они оба ури, и я сказал не использовать файлообменника, который дал вам f. Поэтому вместо этого используйте регистрацию. Ну, не сама строка, а этот uri.