#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.