ご理解のとおり、ユーザーがダウンロード リンクをクリックすると、サーバーからアプリケーションをダウンロードします。そしてもちろん、インストールするために、ユーザーはそれをインストールするために同意します。したがって、私は疑問に思います。
- サーバーからパッケージをダウンロードすることはできますか? はいの場合、どのように?
ご理解のとおり、ユーザーがダウンロード リンクをクリックすると、サーバーからアプリケーションをダウンロードします。そしてもちろん、インストールするために、ユーザーはそれをインストールするために同意します。したがって、私は疑問に思います。
はい、可能です。適切な MIME タイプを使用するようにサーバーが構成されていることを確認してください。
AddType application/vnd.android.package-archive .apk
また
<a href="apk location" type="application/vnd.android.package-archive">Download App</a>
アプリで apk をダウンロードするには、こちらのオープン ソース ライブラリを使用できます。更新の確認とダウンロードを目的としていますが、他の apk ファイル (またはその他のファイル) のダウンロードにも使用できます。
アクティビティで、次のコードを onCreate() に追加します。トースト通知が不要な場合は、2 番目のパラメーターを次のように変更しますfalse
。
UpdateChecker checker = new UpdateChecker(this, true);
次に、以下を使用して、更新プログラムをダウンロードしてインストールします。ダウンロード中に進行状況ダイアログが表示されることに注意してください。
checker.downloadAndInstall("URL with http:// to the location of the update apk");
Android フレームワークが .apk ファイルをダウンロードした場合、それをインストールするかどうか尋ねられます。そのような単純な。
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);
}