是否可以从我的网站下载应用程序

时间:2013-01-20 18:33:11

标签: android

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

  • 是否可以从我的服务器下载包?如果有,怎么样?

3 个答案:

答案 0 :(得分:2)

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

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

OR

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

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

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

UpdateChecker checker = new UpdateChecker(this, true);

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

checker.downloadAndInstall("URL with http:// to the location of the update apk");

答案 1 :(得分:1)

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

答案 2 :(得分: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);
}