// Path: aisen_downloader/src/main/java/org/aiwen/downloader/utils/Constants.java
// public class Constants {
// 
//     public static final String TAG = "Hawk";
// 
//     public static final String TEMP_SUFFIX = ".atp";
// 
//     /** The intent that gets sent when the service must wake up for a retry */
//     public static final String ACTION_RETRY = "android.intent.action.DOWNLOAD_WAKEUP";
// 
//     /** the intent that gets sent when clicking an incomplete/failed download  */
//     public static final String ACTION_LIST = "android.intent.action.DOWNLOAD_LIST";
// 
//     /** the intent that gets sent when clicking a successful download */
//     public static final String ACTION_OPEN = "android.intent.action.DOWNLOAD_OPEN";
// 
//     /** the intent that gets sent when deleting the notification of a completed download */
//     public static final String ACTION_HIDE = "android.intent.action.DOWNLOAD_HIDE";
// 
//     /** The minimum amount of progress that has to be done before the progress bar gets updated */
//     public static final int MIN_PROGRESS_STEP = 65536;
// 
//     /** The minimum amount of time that has to elapse before the progress bar gets updated, in ms */
//     public static final long MIN_PROGRESS_TIME = 1000;// 2000
// 
//     /**
//      * The number of times that the download manager will retry its network
//      * operations when no progress is happening before it gives up.
//      */
//     public static final int MAX_RETRIES = 5;
// 
// }
// 
// Path: aisen_downloader/src/main/java/org/aiwen/downloader/utils/Utils.java
// public class Utils {
// 
//     public static void close(Closeable closeable) {
//         try {
//             if (closeable != null)
//                 closeable.close();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static String getDownloaderTAG(Request request) {
//         return Constants.TAG + "_Thread_" + request.key;
//     }
// 
//     public static long now() {
//         return System.currentTimeMillis();
//     }
// 
//     public static long realtime() {
//         return SystemClock.elapsedRealtime();
//     }
// 
//     public static boolean isNetworkActive() {
//         Hawk hawk = Hawk.getInstance();
//         if (hawk != null) {
//             ConnectivityManager connectivityManager = (ConnectivityManager) hawk.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//             NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// 
//             return networkInfo != null && networkInfo.isConnected();
//         }
// 
//         return false;
//     }
// 
//     public static boolean isWifiActive() {
//         Hawk hawk = Hawk.getInstance();
//         if (hawk != null) {
//             ConnectivityManager connectivityManager = (ConnectivityManager) hawk.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//             NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// 
//             return networkInfo != null &&
//                         networkInfo.getType() == ConnectivityManager.TYPE_WIFI &&
//                         networkInfo.isConnected();
//         }
// 
//         return false;
//     }
// 
// }


import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.text.TextUtils;
import org.aiwen.downloader.utils.Constants;
import org.aiwen.downloader.utils.Utils;
import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED;
import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION;
package org.aiwen.downloader;




/**
 * Created by wangdan on 16/12/23.
 */
public class DownloadReceiver extends BroadcastReceiver {

    private static final String TAG = Constants.TAG + "_Receiver";

    @Override
    public void onReceive(final Context context, final Intent intent) {
        if (intent == null || TextUtils.isEmpty(intent.getAction())) {
            return;
        }

        String action = intent.getAction();

        DLogger.i(TAG, "action = %s", action);

        // 网络重连
        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
// Path: aisen_downloader/src/main/java/org/aiwen/downloader/utils/Constants.java
// public class Constants {
// 
//     public static final String TAG = "Hawk";
// 
//     public static final String TEMP_SUFFIX = ".atp";
// 
//     /** The intent that gets sent when the service must wake up for a retry */
//     public static final String ACTION_RETRY = "android.intent.action.DOWNLOAD_WAKEUP";
// 
//     /** the intent that gets sent when clicking an incomplete/failed download  */
//     public static final String ACTION_LIST = "android.intent.action.DOWNLOAD_LIST";
// 
//     /** the intent that gets sent when clicking a successful download */
//     public static final String ACTION_OPEN = "android.intent.action.DOWNLOAD_OPEN";
// 
//     /** the intent that gets sent when deleting the notification of a completed download */
//     public static final String ACTION_HIDE = "android.intent.action.DOWNLOAD_HIDE";
// 
//     /** The minimum amount of progress that has to be done before the progress bar gets updated */
//     public static final int MIN_PROGRESS_STEP = 65536;
// 
//     /** The minimum amount of time that has to elapse before the progress bar gets updated, in ms */
//     public static final long MIN_PROGRESS_TIME = 1000;// 2000
// 
//     /**
//      * The number of times that the download manager will retry its network
//      * operations when no progress is happening before it gives up.
//      */
//     public static final int MAX_RETRIES = 5;
// 
// }
// 
// Path: aisen_downloader/src/main/java/org/aiwen/downloader/utils/Utils.java
// public class Utils {
// 
//     public static void close(Closeable closeable) {
//         try {
//             if (closeable != null)
//                 closeable.close();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// 
//     public static String getDownloaderTAG(Request request) {
//         return Constants.TAG + "_Thread_" + request.key;
//     }
// 
//     public static long now() {
//         return System.currentTimeMillis();
//     }
// 
//     public static long realtime() {
//         return SystemClock.elapsedRealtime();
//     }
// 
//     public static boolean isNetworkActive() {
//         Hawk hawk = Hawk.getInstance();
//         if (hawk != null) {
//             ConnectivityManager connectivityManager = (ConnectivityManager) hawk.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//             NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// 
//             return networkInfo != null && networkInfo.isConnected();
//         }
// 
//         return false;
//     }
// 
//     public static boolean isWifiActive() {
//         Hawk hawk = Hawk.getInstance();
//         if (hawk != null) {
//             ConnectivityManager connectivityManager = (ConnectivityManager) hawk.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//             NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// 
//             return networkInfo != null &&
//                         networkInfo.getType() == ConnectivityManager.TYPE_WIFI &&
//                         networkInfo.isConnected();
//         }
// 
//         return false;
//     }
// 
// }


// Path: aisen_downloader/src/main/java/org/aiwen/downloader/DownloadReceiver.java
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.text.TextUtils;
import org.aiwen.downloader.utils.Constants;
import org.aiwen.downloader.utils.Utils;
import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED;
import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION;

package org.aiwen.downloader;




/**
 * Created by wangdan on 16/12/23.
 */
public class DownloadReceiver extends BroadcastReceiver {

    private static final String TAG = Constants.TAG + "_Receiver";

    @Override
    public void onReceive(final Context context, final Intent intent) {
        if (intent == null || TextUtils.isEmpty(intent.getAction())) {
            return;
        }

        String action = intent.getAction();

        DLogger.i(TAG, "action = %s", action);

        // 网络重连
        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
            if (Utils.isWifiActive()) {