### Manifest Configuration Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/11-configuration-and-options.md Essential manifest settings for the application, including minimum and target SDK versions, and application attributes like persistence and storage. ```xml ``` -------------------------------- ### Icon Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Provides an example of the encoded string format for icons, specifying icon ID, color code, color modification flag, and brightness. ```text iconId|colorCode|modifyColor|brightness "icon_home|FF5733|1|0.5" ``` -------------------------------- ### Install APK via ADB (Windows) Source: https://github.com/henrichg/phoneprofilesplus/blob/master/docs/install_apk_from_pc.md Use this command in the Windows Command Prompt to install the PhoneProfilesPlus APK. Ensure ADB is in your PATH or navigate to the ADB directory. Replace '[path to apk in PC]' with the actual path to the downloaded APK file. ```bash adb install [path to apk in PC]\PhoneProfilesPlus.apk ``` -------------------------------- ### Activate Profile Intent Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/11-configuration-and-options.md Pass configuration to the application using an Intent. Specify the profile ID, duration in seconds, and whether to show a notification. ```java Intent intent = new Intent("sk.henrichg.phoneprofilesplus.ACTIVATE_PROFILE"); intent.putExtra("profileId", 123L); intent.putExtra("duration", 3600); // 1 hour in seconds intent.putExtra("showNotification", true); ``` -------------------------------- ### Get DatabaseHandler Instance Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/04-database-handler.md Demonstrates the typical way to obtain an instance of the DatabaseHandler, which is a singleton pattern. ```java DatabaseHandler dbHandler = DatabaseHandler.getInstance(context); ``` -------------------------------- ### Sound Setting Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Explains the encoded string format for sound settings, indicating whether to apply a sound and providing the URI for the sound file. ```text change|uri "1|content://media/internal/audio/media/123" ``` -------------------------------- ### Install APK via ADB (Linux/macOS) Source: https://github.com/henrichg/phoneprofilesplus/blob/master/docs/install_apk_from_pc.md Use this command in the Linux or macOS Terminal to install the PhoneProfilesPlus APK. Ensure ADB is in your PATH or navigate to the ADB directory. Replace '[path to apk in PC]' with the actual path to the downloaded APK file. ```bash adb install [path to apk in PC]/PhoneProfilesPlus.apk ``` -------------------------------- ### VPN Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Outlines the fields included in the encoded string format for VPN settings, such as ID, package name, profile details, and enabled status. ```text id|packageName|profileId|profileName|enabled|packageNameData ``` -------------------------------- ### SIM Default Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Demonstrates the encoded string format for default SIM settings, specifying which SIM to use for calls, SMS, and data. ```text callSIM|smsSIM|dataSIM "0|0|0" (use SIM 0 for all) ``` -------------------------------- ### Notification Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Details the encoded string format for notification settings, including LED, sound, vibration, and title. ```text led|sound|vibrate|title ``` -------------------------------- ### Brightness Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Shows the encoded string format for brightness settings, including level, adaptive brightness status, adjustment flag, and system minimum brightness usage. ```text brightness|adaptive|adjustBrightness|useSystemMinBrightness "50|1|1|0" ``` -------------------------------- ### Volume Level Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Illustrates the encoded string format for volume levels, specifying level, volume index mode, and whether to link with other volumes. ```text level|volumeIndex|linkVolume "50|1|0" ``` -------------------------------- ### Access Installed Applications Cache Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/10-helper-and-utility-classes.md Retrieves a list of installed applications using the ApplicationsCache. This helps avoid repeated package manager queries. ```java ApplicationsCache cache = ApplicationsCache.getInstance(context); List apps = cache.getInstalledApps(); ``` -------------------------------- ### Android Logging Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Demonstrates how to use Android's Log class for debugging messages and errors. Ensure the TAG constant is defined in your class. ```java Log.d(TAG, message); Log.e(TAG, "error", exception); ``` -------------------------------- ### Vibration Intensity Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Shows the encoded string format for vibration intensity, including the intensity level and whether to link with volumes. ```text intensity|linkVolumes "-1|1" ``` -------------------------------- ### Contact/Group Format Example Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Illustrates the encoded string format for contacts or groups, using a pattern of contact ID and phone ID separated by '#', with multiple entries separated by '|'. ```text contactId#phoneId|contactId#phoneId|... "123#1|456#2" ``` -------------------------------- ### Execute Command with Root or Shizuku Fallback Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/10-helper-and-utility-classes.md Executes a command, prioritizing root access and falling back to Shizuku if root is unavailable. Requires Shizuku to be available and configured. ```java if (RootUtils.hasRoot()) { RootUtils.executeCommand(cmd); } else if (ShizukuUtils.isShizukuAvailable()) { ShizukuUtils.executeCommand(cmd); } ``` -------------------------------- ### String Constants Usage Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/10-helper-and-utility-classes.md Demonstrates how to access predefined string constants for intent actions, broadcast actions, and preference keys. ```java String action = StringConstants.ACTION_PROFILE_ACTIVATED; ``` -------------------------------- ### Singleton Access Pattern Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/05-application-preferences.md Illustrates the typical singleton access pattern via a getInstance(Context) method and direct access to static volatile fields for thread-safe in-memory preference access. ```java // Via getInstance(Context) method (typical pattern) // Direct access to static volatile fields from anywhere in app ``` -------------------------------- ### Get Airplane Mode Radios Configuration Source: https://github.com/henrichg/phoneprofilesplus/blob/master/docs/airplane_mode_radios_config.md Use this command to retrieve the current configuration of radios that are toggled off when airplane mode is enabled. Ensure ADB is set up and connected to your device. ```bash adb shell settings get global airplane_mode_radios ``` ```bash adb shell content query --uri content://settings/global --projection name:value --where "name=\'airplane_mode_toggleable_radios\'" ``` -------------------------------- ### System Settings Names: Audio & Sound Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Constants for system setting names related to audio and sound. ```java static final String SETTINGS_AUDIO_SAFE_VOLUME_STATE = "audio_safe_volume_state"; ``` ```java static final String SETTINGS_PREF_RING_VIBRATION_INTENSITY = "ring_vibration_intensity"; ``` ```java static final String SETTINGS_PREF_NOTIFICATION_VIBRATION_INTENSITY = "notification_vibration_intensity"; ``` ```java static final String SETTINGS_PREF_HAPTIC_FEEDBACK_VIBRATION_INTENSITY = "haptic_feedback_intensity"; ``` -------------------------------- ### Disable Wi-Fi Scan Throttling via ADB Source: https://github.com/henrichg/phoneprofilesplus/blob/master/docs/wifi_scan_throttling.md Execute this command in your PC's terminal after navigating to your ADB installation directory and enabling USB debugging on your Android device. This command modifies the global settings to disable Wi-Fi scan throttling. ```bash adb shell settings put global wifi_scan_throttle_enabled 0 ``` -------------------------------- ### Singleton Pattern for ApplicationsCache Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/10-helper-and-utility-classes.md Illustrates the singleton pattern for the ApplicationsCache class, ensuring a single instance is used throughout the application for efficient app data caching. It auto-refreshes on app install/uninstall. ```java ApplicationsCache cache = ApplicationsCache.getInstance(context); ``` -------------------------------- ### Event Constructor Parameters Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/03-event-class.md Lists all parameters for the Event class constructor, used for initializing an event object with various configuration settings. ```java Event(long id, String name, int startOrder, long fkProfileStart, long fkProfileEnd, int status, String notificationSoundStart, boolean ignoreManualActivation, boolean blocked, int priority, int delayStart, boolean isInDelayStart, int atEndDo, boolean manualProfileActivation, String startWhenActivatedProfile, int delayEnd, boolean isInDelayEnd, long startStatusTime, long pauseStatusTime, boolean notificationVibrateStart, boolean noPauseByManualActivation, boolean repeatNotificationStart, int repeatNotificationIntervalStart, String notificationSoundEnd, boolean notificationVibrateEnd, boolean manualProfileActivationAtEnd, boolean notificationSoundStartPlayAlsoInSilentMode, boolean notificationSoundEndPlayAlsoInSilentMode) ``` -------------------------------- ### System Settings Names: Display & Screen Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Constants for system setting names related to display and screen. ```java static final String SETTINGS_UI_NIGHT_MODE = "ui_night_mode"; ``` ```java static final String SETTINGS_SCREEN_PAPER_MODE_ENABLED = "screen_paper_mode_enabled"; ``` ```java static final String SETTINGS_BLUE_LIGHT_FILTER = "blue_light_filter"; ``` -------------------------------- ### System Setting Commands (Root) Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Constants for shell commands used to modify system settings with root privileges. ```java static final String COMMAND_SETTINGS_PUT_GLOBAL = "settings put global "; ``` ```java static final String COMMAND_SETTINGS_PUT_SYSTEM = "settings put system "; ``` ```java static final String COMMAND_SETTINGS_PUT_SECURE = "settings put secure "; ``` ```java static final String COMMAND_AM_AIRPLANE_MODE = "am broadcast -a android.intent.action.AIRPLANE_MODE --ez state "; ``` ```java static final String COMMAND_SERVICE_ROOT_PHONE = "phone"; ``` ```java static final String COMMAND_SERVICE_ROOT_WIFI = "wifi"; ``` ```java static final String COMMAND_SERVICE_ROOT_ISUB = "isub"; ``` ```java static final String COMMAND_AIRPLANE_MODE = "cmd connectivity airplane-mode"; ``` ```java static final String COMMAND_AM_FORCE_STOP_APP = "am force-stop "; ``` -------------------------------- ### Mutex Pattern for Synchronization Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/10-helper-and-utility-classes.md Demonstrates the singleton pattern for mutexes used to synchronize access to critical sections in multithreaded environments. Each mutex is designed for a specific resource. ```java class MutexName { private static Mutex instance = new Mutex(); } // Usage: Synchronize access to shared resources synchronized(MutexName.instance) { // Critical section } ``` -------------------------------- ### Execute Root Command Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/10-helper-and-utility-classes.md Executes a system command using root privileges. Ensure root access is available before attempting execution. ```java RootUtils.executeCommand("settings put system screen_brightness 100"); ``` -------------------------------- ### Device Display Settings Constants Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/04-database-handler.md These constants define keys for various device display settings such as wallpaper changes, dark mode, and always-on display. ```java static final String KEY_DEVICE_WALLPAPER_CHANGE = "deviceWallpaperChange"; static final String KEY_DEVICE_WALLPAPER = "deviceWallpaper"; static final String KEY_DEVICE_WALLPAPER_FOR = "deviceWallpaperFor"; static final String KEY_DEVICE_WALLPAPER_LOCKSCREEN = "deviceWallpaperLockScreen"; static final String KEY_SCREEN_DARK_MODE = "screenNightMode"; static final String KEY_SCREEN_NIGHT_LIGHT = "screenNightLight"; static final String KEY_SCREEN_NIGHT_LIGHT_PREFS = "screenNightLightPrefs"; static final String KEY_ALWAYS_ON_DISPLAY = "alwaysOnDisplay"; static final String KEY_SCREEN_ON_PERMANENT = "screenOnPermanent"; ``` -------------------------------- ### System Settings Names: Power & Performance Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Constants for system setting names related to power and performance. ```java static final String SETTINGS_LOW_POWER = "low_power"; // Battery saver ``` ```java static final String SETTINGS_DOZE_ALWAYS_ON = "doze_always_on"; // Always-on display ``` -------------------------------- ### Duration and Activation Constants Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/04-database-handler.md Constants related to setting durations, actions after duration, and user activation parameters for profiles. ```java static final String KEY_DURATION = "duration"; static final String KEY_AFTER_DURATION_DO = "afterDurationDo"; static final String KEY_AFTER_DURATION_PROFILE = "afterDurationProfile"; static final String KEY_ASK_FOR_DURATION = "askForDuration"; static final String KEY_DURATION_NOTIFICATION_SOUND = "durationNotificationSound"; static final String KEY_DURATION_NOTIFICATION_VIBRATE = "durationNotificationVibrate"; static final String KEY_ACTIVATION_BY_USER_COUNT = "activationByUserCount"; static final String KEY_END_OF_ACTIVATION_TYPE = "endOfActivationType"; static final String KEY_END_OF_ACTIVATION_TIME = "endOfActivationTime"; ``` -------------------------------- ### Grant WRITE_SECURE_SETTINGS Permission via ADB Source: https://github.com/henrichg/phoneprofilesplus/blob/master/docs/grant_g1_permission.md Execute this command in your PC's terminal after setting up ADB and enabling USB debugging on your device. This grants PhoneProfilesPlus the necessary permission to modify secure settings. ```bash adb shell pm grant sk.henrichg.phoneprofilesplus android.permission.WRITE_SECURE_SETTINGS ``` -------------------------------- ### Audio Settings Preferences Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Preference keys related to audio vibration settings. ```java static final String SETTINGS_PREF_VIBRATE_IN_NORMAL = "vibrate_in_normal"; ``` ```java static final String SETTINGS_PREF_VIBRATE_IN_SILENT = "vibrate_in_silent"; ``` ```java static final String SETTINGS_PREF_VIBRATE_ON = "vibrate_on"; ``` -------------------------------- ### ActivateProfileHelper Class Declaration Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md This is the basic class declaration for ActivateProfileHelper, a utility class for profile activation. ```java class ActivateProfileHelper { // package-private utility class for profile activation } ``` -------------------------------- ### Wallpaper Types Constants Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/02-profile-class.md Defines integer constants for different types of wallpaper changes supported by the profile. ```java static final int CHANGE_WALLPAPER_IMAGE = 1; static final int CHANGE_WALLPAPER_IMAGE_WITH = 4; static final int CHANGE_WALLPAPER_LIVE = 2; static final int CHANGE_WALLPAPER_FOLDER = 3; ``` -------------------------------- ### Default Values Constants Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Defines integer and string constants for indicating no change in values, and specific integer constants for brightness settings and minimum profile icon luminance. ```java static final int NO_CHANGE_VALUE = 0; static final String NO_CHANGE_VALUE_STR = "0"; static final int BRIGHTNESS_VALUE_FOR_DARK_MODE = 30; static final double MIN_PROFILE_ICON_LUMINANCE = 0.3d; static final int BRIGHTNESS_ADAPTIVE_BRIGHTNESS_NOT_SET = -99; ``` -------------------------------- ### PPPSettings Integration Type Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Constant defining the system setting type for integration with PPPPSettings. ```java static final String PPPPS_SETTINGS_TYPE_SYSTEM = "system"; ``` -------------------------------- ### Profile Icon Resource IDs Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/02-profile-class.md A static array containing drawable resource IDs for predefined profile icons, including default, home, outdoor, work, sleep, and car variants. ```java static final int[] profileIconId = { // Default icon R.drawable.ic_profile_default, // Home icons (6 variants) R.drawable.ic_profile_home, // Outdoor icons (9 variants) R.drawable.ic_profile_outdoors_1, // Work icons (19 variants) R.drawable.ic_profile_work_1, // Sleep/night icons R.drawable.ic_profile_sleep, // Car icons (3 variants) R.drawable.ic_profile_car_1, // And many more... }; ``` -------------------------------- ### Preference Keys for State Tracking Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Preference keys used for tracking the state of various profile settings. ```java static final String PREF_RINGER_VOLUME = "ringer_volume"; ``` ```java static final String PREF_NOTIFICATION_VOLUME = "notification_volume"; ``` ```java static final String PREF_RINGER_MODE = "ringer_mode"; ``` ```java static final String PREF_ZEN_MODE = "zen_mode"; ``` ```java static final String PREF_LOCKSCREEN_DISABLED = "lockscreenDisabled"; ``` ```java static final String PREF_ACTIVATED_PROFILE_SCREEN_TIMEOUT_WHEN_SCREEN_OFF = "activated_profile_screen_timeout"; ``` ```java static final String PREF_KEEP_SCREEN_ON_PERMANENT = "keep_screen_on_permanent"; ``` ```java static final String PREF_MERGED_RING_NOTIFICATION_VOLUMES = "merged_ring_notification_volumes"; ``` -------------------------------- ### Profile Icon Resource IDs Array Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md An array containing drawable resource IDs for profile icons. These are organized by category for visual selection. ```java static final int[] profileIconId = { // 100+ drawable resource IDs // Organized by category: default, home, outdoor, work, sleep, car, etc. }; ``` -------------------------------- ### Bitmap Resizing and Palette Generation Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/10-helper-and-utility-classes.md Performs bitmap operations including resizing and generating a color palette. Useful for image manipulation and UI theming. ```java Bitmap icon = BitmapManipulator.resizeImage(bitmap, width, height); Palette palette = Palette.from(bitmap).generate(); ``` -------------------------------- ### Notification and Vibration Constants Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/04-database-handler.md Constants for controlling notification LED, vibration settings, and heads-up notifications. ```java static final String KEY_NOTIFICATION_LED = "notificationLed"; static final String KEY_VIBRATE_WHEN_RINGING = "vibrateWhenRinging"; static final String KEY_VIBRATE_NOTIFICATIONS = "vibrateNotifications"; static final String KEY_VIBRATE_ON_TOUCH = "vibrateOnTouch"; static final String KEY_HEADS_UP_NOTIFICATIONS = "headsUpNotifications"; static final String KEY_GENERATE_NOTIFICATION = "generateNotification"; static final String KEY_HIDE_STATUS_BAR_ICON = "hideStatusBarIcon"; ``` -------------------------------- ### Singleton Database Access Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/04-database-handler.md Obtain an instance of the DatabaseHandler using the static getInstance method. This ensures a single, thread-safe instance for database operations. ```java DatabaseHandler handler = DatabaseHandler.getInstance(context); ``` -------------------------------- ### Brightness Constants Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/02-profile-class.md Constants related to screen brightness settings, including adaptive brightness and values for dark mode. ```java static final int BRIGHTNESS_ADAPTIVE_BRIGHTNESS_NOT_SET = -99; static final int BRIGHTNESS_VALUE_FOR_DARK_MODE = 30; static final double MIN_PROFILE_ICON_LUMINANCE = 0.3d; ``` -------------------------------- ### Phone Profiles Plus Package Structure Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/00-index.md This snippet outlines the directory and file structure of the Phone Profiles Plus Android application, indicating the purpose of key Java files and directories. ```java sk.henrichg.phoneprofilesplus/ ├── PPApplication.java (App entry point) ├── Profile.java (Profile data model) ├── Event.java (Event data model) ├── DatabaseHandler.java (Database access) ├── ApplicationPreferences.java (Global preferences) ├── ActivateProfileHelper.java (Setting application) ├── Activities/ │ ├── ActivatorActivity.java │ ├── ProfilesPrefsActivity.java │ ├── EventsPrefsActivity.java │ └── ActivityLogActivity.java ├── Fragments/ │ ├── ProfilesPrefsFragment.java │ ├── EventsPrefsFragment.java │ └── 20+ specific preference fragments ├── Broadcast Receivers/ │ ├── System event receivers │ ├── Custom event receivers │ └── 50+ receiver implementations ├── Services/ │ ├── WorkManager tasks │ ├── ProfileListNotificationService │ └── Other background services ├── Utilities/ │ ├── BitmapManipulator.java │ ├── RootUtils.java │ ├── ShizukuUtils.java │ ├── ApplicationsCache.java │ └── 50+ helper classes └── Other/ ├── Adapters ├── Dialogs ├── Preferences └── Widgets ``` -------------------------------- ### After Duration Actions Constants Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/02-profile-class.md Defines integer constants for actions to be performed after a profile's duration expires, such as restoring previous settings or activating another profile. ```java static final int AFTER_DURATION_DO_NOTHING = 0; // Keep profile active static final int AFTER_DURATION_DO_UNDO_PROFILE = 1; // Restore previous static final int AFTER_DURATION_DO_DEFAULT_PROFILE = 2; // Activate default static final int AFTER_DURATION_DO_RESTART_EVENTS = 3; // Restart events static final int AFTER_DURATION_DO_SPECIFIC_PROFILE = 4; // Activate specific static final int AFTER_DURATION_DO_SPECIFIC_PROFILE_THEN_RESTART_EVENTS = 5; // Specific then events ``` -------------------------------- ### Subscription Types for Mobile Services Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/06-activate-profile-helper.md Defines constants for different mobile subscription types. ```java static final int SUBSCRIPTRION_VOICE = 1; // Voice calls ``` ```java static final int SUBSCRIPTRION_SMS = 2; // SMS messages ``` ```java static final int SUBSCRIPTRION_DATA = 3; // Mobile data ``` -------------------------------- ### Boolean Flag Values Convention Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/07-types-and-data-structures.md Explains the convention for boolean flag values, where 0 represents false/off/disabled/no and 1 represents true/on/enabled/yes. ```text 0 = false/off/disabled/no 1 = true/on/enabled/yes ``` -------------------------------- ### Import/Export Constants Source: https://github.com/henrichg/phoneprofilesplus/blob/master/_autodocs/04-database-handler.md Constants used for database file paths, backup filenames, and import/export error codes. ```java static final String DB_FILEPATH = "/data/" + PACKAGE_NAME + "/databases"; static final String EXPORT_DBFILENAME = DATABASE_NAME + ".backup"; static final String EXPORT_APP_PREF_FILENAME = "ApplicationPreferences.backup"; static final String SHARED_EXPORT_FILENAME = "phoneProfilesPlus_backup"; static final String SHARED_EXPORT_FILEEXTENSION = ".zip"; static final int IMPORT_ERROR_BUG = 0; static final int IMPORT_ERROR_NEVER_VERSION = -999; static final int IMPORT_OK = 1; ```