package com.jackpf.apkdownloader;
import java.io.File;
import android.annotation.SuppressLint;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import com.jackpf.apkdownloader.Entity.App;
import com.jackpf.apkdownloader.Model.UIInterface;
public class Downloader
{
/**
* Context
*/
private Context context;
/**
* UI
*/
private UIInterface ui;
/**
* Download dir
*/
public static final String DOWNLOAD_DIR = "ApkDownloads";
/**
* Constructor
*
* @param context
*/
public Downloader(Context context, UIInterface ui)
{
this.context = context;
this.ui = ui;
}
/**
* Download an app
*
* @param app
*/
@SuppressLint("NewApi")
public void download(final App app)
{
final DownloadManager dm = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Request request = new DownloadManager.Request(Uri.parse(app.getDownloadPath()))
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(true)
.setTitle(app.getAppId())
.setDescription(context.getString(R.string.app_downloading))
.setDestinationInExternalPublicDir(DOWNLOAD_DIR, app.getAppId() + ".apk")
.addRequestHeader("Cookie", "MarketDA=" + app.getMarketDA()) // + ";ANDROIDSECURE=" + authToken)
;
if (android.os.Build.VERSION.SDK_INT >= 11) {
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE | DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
dm.enqueue(request);
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) {
ui.initialise((Object) null);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean install = prefs.getBoolean(context.getString(R.string.pref_autoinstall_key), Boolean.valueOf(context.getString(R.string.pref_autoinstall_default)));
if (install) {
Bundle extras = intent.getExtras();
DownloadManager.Query q = new DownloadManager.Query();
q.setFilterById(extras.getLong(DownloadManager.EXTRA_DOWNLOAD_ID));
Cursor c = dm.query(q);
if (c.moveToFirst()) {
int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
if (status == DownloadManager.STATUS_SUCCESSFUL) {
String path = c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME));
Helpers.installFile(context, new File(path));
}
}
}
}
context.unregisterReceiver(this);
}
}, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
}