package party.danyang.nationalgeographic.utils; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Build; import android.support.v7.app.AlertDialog; import party.danyang.nationalgeographic.R; /** * Created by dream on 16-10-11. */ public final class DownloadMangerResolver { private static final String DOWNLOAD_MANAGER_PACKAGE_NAME = "com.android.providers.downloads"; /** * Resolve whether the DownloadManager is enable in current devices. * * @return true if DownloadManager is enable,false otherwise. */ public static boolean resolve(Context context) { boolean enable = resolveEnable(context); if (!enable) { showDialog(context); } return enable; } /** * Resolve whether the DownloadManager is enable in current devices. * * @param context * @return true if DownloadManager is enable,false otherwise. */ private static boolean resolveEnable(Context context) { int state = context.getPackageManager() .getApplicationEnabledSetting(DOWNLOAD_MANAGER_PACKAGE_NAME); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { return !(state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED || state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER || state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED); } else { return !(state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED || state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER); } } private static void showDialog(final Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(R.string.enable_download_manager); builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); enableDownloadManager(context); } }); builder.setNegativeButton(R.string.cancel, null); builder.show(); } /** * Start activity to Settings to enable DownloadManager. */ private static void enableDownloadManager(Context context) { try { //Open the specific App Info page: Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + DOWNLOAD_MANAGER_PACKAGE_NAME)); context.startActivity(intent); } catch (ActivityNotFoundException e) { e.printStackTrace(); //Open the generic Apps page: Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS); context.startActivity(intent); } } }