Skip to content
Snippets Groups Projects
Commit e73d1ac3 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Permission dialog and check for drawing overlays

parent 5d7cd375
No related branches found
No related tags found
No related merge requests found
......@@ -404,6 +404,8 @@
<string name="allow_settings_access_ringtone_description">VLC needs you to grant this permission to set up this song as your ringtone.</string>
<string name="allow_settings_access_brightness_title">Allow VLC to change brightness mode</string>
<string name="allow_settings_access_brightness_description">VLC needs you to grant this permission to change your brightness mode.</string>
<string name="allow_draw_overlays_title">Allow VLC player popup over other apps</string>
<string name="allow_sdraw_overlays_description">VLC needs you to grant this permission display your video in a popup over other applications.</string>
<string name="permission_ask_again">Grant permission</string>
<string name="exit_app">Close VLC</string>
<string name="hardware_acceleration_error">hardware acceleration error, switching to software decoding</string>
......
......@@ -53,11 +53,17 @@ public class Permissions {
public static final int PERMISSION_SYSTEM_RINGTONE = 42;
public static final int PERMISSION_SYSTEM_BRIGHTNESS = 43;
public static final int PERMISSION_SYSTEM_DRAW_OVRLAYS = 44;
/*
* Marshmallow permission system management
*/
@TargetApi(Build.VERSION_CODES.M)
public static boolean canDrawOverlays(Context context) {
return !AndroidUtil.isMarshMallowOrLater() || Settings.canDrawOverlays(context);
}
@TargetApi(Build.VERSION_CODES.M)
public static boolean canWriteSettings(Context context) {
return !AndroidUtil.isMarshMallowOrLater() || Settings.System.canWrite(context);
......@@ -82,6 +88,12 @@ public class Permissions {
}
}
public static void checkDrawOverlaysPermission(Activity activity) {
if (AndroidUtil.isMarshMallowOrLater() && !canDrawOverlays(activity)) {
showSettingsPermissionDialog(activity, PERMISSION_SYSTEM_DRAW_OVRLAYS);
}
}
public static void checkWriteSettingsPermission(Activity activity, int mode) {
if (AndroidUtil.isMarshMallowOrLater() && !canWriteSettings(activity)) {
showSettingsPermissionDialog(activity, mode);
......@@ -183,6 +195,7 @@ public class Permissions {
private static Dialog createSettingsDialogCompat(final Activity activity, int mode) {
int titleId = 0, textId = 0;
String action = Settings.ACTION_MANAGE_WRITE_SETTINGS;
switch (mode) {
case PERMISSION_SYSTEM_RINGTONE:
titleId = R.string.allow_settings_access_ringtone_title;
......@@ -192,7 +205,13 @@ public class Permissions {
titleId = R.string.allow_settings_access_brightness_title;
textId = R.string.allow_settings_access_brightness_description;
break;
case PERMISSION_SYSTEM_DRAW_OVRLAYS:
titleId = R.string.allow_draw_overlays_title;
textId = R.string.allow_sdraw_overlays_description;
action = Settings.ACTION_MANAGE_OVERLAY_PERMISSION;
break;
}
final String finalAction = action;
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity)
.setTitle(activity.getString(titleId))
.setMessage(activity.getString(textId))
......@@ -201,7 +220,7 @@ public class Permissions {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
Intent i = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
Intent i = new Intent(finalAction);
i.setData(Uri.parse("package:" + activity.getPackageName()));
try {
activity.startActivity(i);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment