2013-01-20 121 views
-1

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

  • 是否可以从我的服务器下载软件包?如果是的话如何?

回答

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()。然后

UpdateChecker checker = new UpdateChecker(this, true); 

,使用下面的下载和安装更新:如果你不想Toast通知,第二个参数更改为false。请注意,这将显示一个进度对话框同时下载:

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

在Java代码中,我怎么能diwnload包? – gkotla

+0

@ user1993428查看我的编辑 –

+0

我可以使用您的代码通过我的应用程序帮助下载其他应用程序。我理解对吗? – gkotla

1

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

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); 
} 
相关问题