Skip to content

Commit d17eae9

Browse files
authored
Merge pull request #12253 from Profpatsch/popup-overlay-alert-dialog
Overlay Permission: display explanatory dialog for Android > R
2 parents ccd76de + 74562db commit d17eae9

File tree

2 files changed

+44
-7
lines changed

2 files changed

+44
-7
lines changed

app/src/main/java/org/schabi/newpipe/util/PermissionHelper.java

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
import android.net.Uri;
1010
import android.os.Build;
1111
import android.provider.Settings;
12+
import android.text.Html;
1213
import android.widget.Toast;
1314

1415
import androidx.annotation.RequiresApi;
16+
import androidx.appcompat.app.AlertDialog;
1517
import androidx.core.app.ActivityCompat;
1618
import androidx.core.content.ContextCompat;
1719

@@ -113,14 +115,47 @@ public static boolean checkPostNotificationsPermission(final Activity activity,
113115
@RequiresApi(api = Build.VERSION_CODES.M)
114116
public static boolean checkSystemAlertWindowPermission(final Context context) {
115117
if (!Settings.canDrawOverlays(context)) {
116-
final Intent i = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
117-
Uri.parse("package:" + context.getPackageName()));
118-
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
119-
try {
120-
context.startActivity(i);
121-
} catch (final ActivityNotFoundException ignored) {
118+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
119+
final Intent i = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
120+
Uri.parse("package:" + context.getPackageName()));
121+
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
122+
try {
123+
context.startActivity(i);
124+
} catch (final ActivityNotFoundException ignored) {
125+
}
126+
return false;
127+
// from Android R the ACTION_MANAGE_OVERLAY_PERMISSION will only point to the menu,
128+
// so let’s add a dialog that points the user to the right setting.
129+
} else {
130+
final String appName = context.getApplicationInfo()
131+
.loadLabel(context.getPackageManager()).toString();
132+
final String title = context.getString(R.string.permission_display_over_apps);
133+
final String permissionName =
134+
context.getString(R.string.permission_display_over_apps_permission_name);
135+
final String appNameItalic = "<i>" + appName + "</i>";
136+
final String permissionNameItalic = "<i>" + permissionName + "</i>";
137+
final String message =
138+
context.getString(R.string.permission_display_over_apps_message,
139+
appNameItalic,
140+
permissionNameItalic
141+
);
142+
new AlertDialog.Builder(context)
143+
.setTitle(title)
144+
.setMessage(Html.fromHtml(message, Html.FROM_HTML_MODE_COMPACT))
145+
.setPositiveButton("OK", (dialog, which) -> {
146+
// we don’t need the package name here, since it won’t do anything on >R
147+
final Intent intent =
148+
new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
149+
try {
150+
context.startActivity(intent);
151+
} catch (final ActivityNotFoundException ignored) {
152+
}
153+
})
154+
.setCancelable(true)
155+
.show();
156+
return false;
122157
}
123-
return false;
158+
124159
} else {
125160
return true;
126161
}

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@
257257
<string name="restore_defaults">Restore defaults</string>
258258
<string name="restore_defaults_confirmation">Do you want to restore defaults?</string>
259259
<string name="permission_display_over_apps">Give permission to display over other apps</string>
260+
<string name="permission_display_over_apps_message">In order to use the Popup Player, please select %1$s in the following Android settings menu and enable %2$s.</string>
261+
<string name="permission_display_over_apps_permission_name">“Allow display over other apps”</string>
260262
<!-- error activity -->
261263
<string name="error_report_notification_title">NewPipe encountered an error, tap to report</string>
262264
<string name="error_report_notification_toast">An error occurred, see the notification</string>

0 commit comments

Comments
 (0)