У меня есть веб-просмотр, который в основном способен перехватывать все виды ссылок, видео, apks, hrefs.
Теперь, что я хочу, так это как только я скачаю APK из URL, это будетустанавливается автоматически:
Это часть кода shouldOverrideUrlLoading()
:
else if(url.endsWith(".apk"))
{
mWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(final String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
}
});
Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse(url));
startActivity(intent);
return true;
Если я добавлю
intent.setDataAndType(Uri.parse(url), "application/vnd.android.package-archive");
Чем приложение аварийно завершится ...
Есть какие-нибудь идеи относительно того, что делать?
РЕДАКТИРОВАТЬ: я смог инициировать загрузку и установку пакета автоматически (с помощью сна ()):
else if(url.endsWith(".apk"))
{
mWebView.setDownloadListener(new DownloadListener() {
public void onDownloadStart(final String url, String userAgent,
String contentDisposition, String mimetype,
long contentLength) {
}
});
Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse(url));
startActivity(intent);
String fileName = Environment.getExternalStorageDirectory() + "/download/" + url.substring( url.lastIndexOf('/')+1, url.length() );
install(fileName);
return true;
и, как предположил vitamoe:
protected void install(String fileName) {
Intent install = new Intent(Intent.ACTION_VIEW);
install.setDataAndType(Uri.fromFile(new File(fileName)),
"application/vnd.android.package-archive");
startActivity(install);
}
Однако я не могу определить точное время окончания загрузки, возможно, потребуется создать собственную функцию загрузки, а не использовать функцию браузера, какие-либо идеи?