A helper class to detect whether DownloadManager is disabled in Android device,if true show AlertDialog to tell user to enable it.
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 android.support.v7.widget.AppCompatTextView; | |
public final class DownloadManagerResolver { | |
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) { | |
AlertDialog alertDialog = createDialog(context); | |
alertDialog.show(); | |
} | |
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 AlertDialog createDialog(final Context context) { | |
AppCompatTextView messageTextView = new AppCompatTextView(context); | |
messageTextView.setTextSize(16f); | |
messageTextView.setText("DownloadManager is disabled. Please enable it."); | |
return new AlertDialog.Builder(context) | |
.setView(messageTextView, 50, 30, 50, 30) | |
.setPositiveButton("ok", new DialogInterface.OnClickListener() { | |
@Override | |
public void onClick(DialogInterface dialog, int which) { | |
enableDownloadManager(context); | |
} | |
}) | |
.setCancelable(false) | |
.create(); | |
} | |
/** | |
* Start activity to enable DownloadManager in Settings. | |
*/ | |
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); | |
} | |
} | |
} |
This comment has been minimized.
This comment has been minimized.
Hi, thanks for this code. I'm stuck on this problem. But how i can use this class? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Hello, Folyd, Can I use the class in my project?Does it have copyright? If I use it in my project, what should I do? By the way, thank you for you sharing.