mirror of
https://github.com/Benjamin-Wiegand/Flywheel.git
synced 2026-08-07 14:22:23 -07:00
feat: permission check in main activity
This commit is contained in:
@@ -1,11 +1,7 @@
|
||||
package io.benwiegand.projection.geargrinder;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
@@ -21,6 +17,10 @@ import androidx.core.view.WindowInsetsCompat;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import io.benwiegand.projection.geargrinder.permission.PermissionEntry;
|
||||
import io.benwiegand.projection.geargrinder.permission.PermissionRequirements;
|
||||
import io.benwiegand.projection.geargrinder.settings.SettingsManager;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
private static final String TAG = MainActivity.class.getSimpleName();
|
||||
|
||||
@@ -35,20 +35,21 @@ public class MainActivity extends AppCompatActivity {
|
||||
return insets;
|
||||
});
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
|
||||
Log.i(TAG, "requesting notification permission");
|
||||
if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) {
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.post_notifications_permission_title)
|
||||
.setMessage(R.string.post_notifications_permission_rationale)
|
||||
.setPositiveButton(R.string.grant_permission_button, (d, i) ->
|
||||
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 69))
|
||||
.setNegativeButton(R.string.not_now_button, null)
|
||||
.setCancelable(false)
|
||||
.show();
|
||||
} else {
|
||||
requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 69);
|
||||
}
|
||||
SettingsManager settingsManager = new SettingsManager(this);
|
||||
for (PermissionEntry entry : PermissionRequirements.PERMISSION_ENTRIES) {
|
||||
if (!entry.usedByConfiguration().apply(settingsManager)) continue;
|
||||
if (!entry.requiredByConfiguration().apply(settingsManager)) continue;
|
||||
if (entry.check() == null || entry.check().apply(this)) continue;
|
||||
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.missing_required_permissions_dialog_title)
|
||||
.setMessage(R.string.missing_required_permissions_dialog_message)
|
||||
.setPositiveButton(R.string.manage_permissions_button, (d, i) ->
|
||||
startActivity(new Intent(this, PermissionGrantActivity.class)))
|
||||
.setNeutralButton(R.string.not_now_button, null)
|
||||
.show();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -79,6 +79,9 @@
|
||||
|
||||
<string name="root_permission_failed">Failed to obtain root. Either your device isn\'t rooted or root access has been denied. Please grant access from your root manager or choose a different privilege mode.</string>
|
||||
|
||||
<string name="missing_required_permissions_dialog_title">Missing required permissions</string>
|
||||
<string name="missing_required_permissions_dialog_message">One or more required permissions are missing. Flywheel may not work properly unless you grant them.</string>
|
||||
|
||||
<string name="cellular_network_badge_5g_plus">5G+</string>
|
||||
<string name="cellular_network_badge_5g">5G</string>
|
||||
<string name="cellular_network_badge_5ge">5Ge</string>
|
||||
|
||||
Reference in New Issue
Block a user