gpt4 book ai didi

android - 下载 apk 并在 android 应用程序中开始安装提示

转载 作者:行者123 更新时间:2023-11-29 21:53:39 25 4
gpt4 key购买 nike

我正在构建私有(private)企业 Android 应用程序。我的目标是检测何时有更新可用并提供用户下载。如果用户选择下载更新文件并显示 android 应用程序安装提示。

我成功检查了更新,问题是没有下载 apk 文件(创建了空文件)因此“解析包时出现问题。” android 应用程序安装提示中显示错误。

代码:

public void downloadfileto(String fileurl, String filename) { 
String myString;
try {
FileOutputStream f = new FileOutputStream(filename);
try {
URL url = new URL(fileurl);
URLConnection urlConn = url.openConnection();
InputStream is = urlConn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is, 8000);
int current = 0;
while ((current = bis.read()) != -1) {
f.write((byte) current);
}
} catch (Exception e) {
myString = e.getMessage();
}
f.flush();
f.close();
install(filename);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

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);
}

函数 downloadfileto 被调用:

downloadfileto("http://some-url/ind.apk", "data/data/my.package.name/app.apk");

最佳答案

即使下载成功,您也无法安装 APK 文件,因为安装程序无法读取该文件。另外,正如 Chris Stratton 指出的那样,您的硬编码路径是草率的(在 Android 4.1 及更早版本上)和灾难性的(在 Android 4.2 及更高版本上)。

就下载逻辑而言,一次下载一个字节不太可能表现良好。尝试这样的事情(对于名为 outputFile 和名为 urlURL):

  HttpURLConnection c=(HttpURLConnection)url.openConnection();

c.setRequestMethod("GET");
c.setReadTimeout(15000);
c.connect();

FileOutputStream fos=new FileOutputStream(output.getPath());
BufferedOutputStream out=new BufferedOutputStream(fos);

try {
InputStream in=c.getInputStream();
byte[] buffer=new byte[8192];
int len=0;

while ((len=in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}

out.flush();
}
finally {
fos.getFD().sync();
out.close();
}

关于android - 下载 apk 并在 android 应用程序中开始安装提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13790048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com