App Settings Checker
A Flutter plugin to check common device settings and open system settings menus.
By PT. Nicxon International Solutions
π Table of Contents
π Installation
Add the plugin to your project:
flutter pub add app_settings_checker
π± Platform Setup
Android
Required Permissions
Add the necessary permissions to your AndroidManifest.xml based on your usage:
π Battery Optimizations
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
π Location Access
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
π Device ID (for Build.SERIAL on Android < 10)
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
iOS
π Location Services
Add the following key(s) to your Info.plist to request location permission from the user:
<key>NSLocationWhenInUseUsageDescription</key>
<string>Need location access to check GPS settings.</string>
You can also add NSLocationAlwaysUsageDescription if your app requires background location.
π Device ID
iOS does not allow permanent device IDs like Androidβs
ANDROID_ID.
The plugin usesidentifierForVendor, which resets on uninstall/reinstall.
π§© Usage
Import the package:
import 'package:app_settings_checker/app_settings_checker.dart';
Open App Settings
AppSettingsChecker.openAppSettings();
Location Settings
Check if location is enabled:
final isEnabled = await AppSettingsChecker.isLocationEnabled();
Open location settings (note: on iOS, this opens the app's settings page, not system location settings):
AppSettingsChecker.openLocationSettings();
Notification Settings
Check if notifications are enabled:
final isEnabled = await AppSettingsChecker.areNotificationsEnabled();
Open notification settings:
AppSettingsChecker.openNotificationSettings();
Battery Optimization Status
Check a more descriptive status using the BatteryOptimizationStatus enum:
final status = await AppSettingsChecker.getBatteryOptimizationStatus();
switch (status) {
case BatteryOptimizationStatus.optimized:
print('Battery optimization is ON for this app.');
break;
case BatteryOptimizationStatus.notOptimized:
print('Battery optimization is OFF (whitelisted).');
break;
case BatteryOptimizationStatus.unknown:
print('Battery optimization status unknown.');
break;
}
No need to compare strings β you get type-safe values:
BatteryOptimizationStatus.optimizedBatteryOptimizationStatus.notOptimizedBatteryOptimizationStatus.unknown
Battery Optimization Settings
Check if battery optimization is disabled (Android only, not applicable on iOS):
final isDisabled = await AppSettingsChecker.isBatteryOptimizationDisabled();
Open battery optimization settings:
AppSettingsChecker.openBatteryOptimizationSettings();
App Info & Device Details
Get app version:
final version = await AppSettingsChecker.getAppVersion();
Get phone model:
final model = await AppSettingsChecker.getPhoneModel();
Get device ID:
final deviceId = await AppSettingsChecker.getDeviceId();
Get Platform Version
final platformVersion = await AppSettingsChecker.getPlatformVersion();