-1

如您所知,如果用户单击下载链接,我将从我的服务器下载应用程序。当然,对于安装,用户将接受安装它。因此,我想知道;

  • 是否可以从我的服务器下载软件包?如果是怎么办?
4

3 回答 3

2

是的,有可能。确保您已将服务器配置为使用适当的 mime 类型。

AddType application/vnd.android.package-archive .apk

或者

<a href="apk location" type="application/vnd.android.package-archive">Download App</a>

要在您的应用程序中下载 apk,您可以在此处使用我的开源库。虽然它用于检查和下载更新,但您也可以使用它来下载其他 apk 文件(或任何其他文件)。

在您的活动中,将以下代码添加到您的 onCreate()。如果您不想要 toast 通知,请将第二个参数更改为false

UpdateChecker checker = new UpdateChecker(this, true);

然后,使用以下内容下载并安装更新。请注意,这将在下载时显示一个进度对话框:

checker.downloadAndInstall("URL with http:// to the location of the update apk");
于 2013-01-20T18:38:20.313 回答
1

如果 Android 框架下载了一个 .apk 文件,它会询问您是否要安装它。就那么简单。

于 2013-01-20T18:35:11.963 回答
0

这是下载apk文件的代码:

String fileName="yourApk.apk";
try 
{
    File root = android.os.Environment.getExternalStorageDirectory();
    File dir = new File (root.getAbsolutePath()+"/DownloadedApk/");
    if(dir.exists()==false) 
    {
         dir.mkdirs();
    }
    URL url = new URL("http://www.example.com/apk/yourApk.apk"); 
    URLConnection ucon = url.openConnection();
    InputStream is = ucon.getInputStream();
    FileOutputStream fos = new FileOutputStream(dir+"/"+fileName);
    byte data[] = new byte[1024];
    long lenghtOfFile=ucon.getContentLength();
    int count = 0;
    long total = 0;
    int progress = 0;
    while (((count=is.read(data)) != -1))
    {
        total += count;
        int progress_temp = (int) ((int)total*100/lenghtOfFile);
        if(progress_temp%10 == 0 && progress != progress_temp)
        {
            progress = progress_temp;
            publishProgress(progress);    
        }
        fos.write(data, 0, count);
    }
    is.close();
    fos.close();
} catch (Exception e) 
{
    Log.d("DownloadManager", "Error: " + e);
}
于 2013-01-20T18:40:42.423 回答