Replaces separate welcome and server setup screens with a unified 5-page onboarding carousel that guides users through: - App introduction and backend requirements - Notification permission with explanation - All files access permission with explanation - Server configuration (address, port, key) with QR scanning - Completion confirmation Also adds notification permission checks before uploads to ensure upload progress notifications can be displayed. Users are prompted for permission if not already granted, then upload proceeds automatically. Changes: - Create OnboardingScreen.kt with 5-page carousel flow - Add onboarding completion tracking to PreferencesUtil - Update navigation to show onboarding on first launch - Add notification permission checks to upload tabs - Add roundIcon attribute to manifest for better icon display
70 lines
3.0 KiB
XML
70 lines
3.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools"
|
|
package="com.mattintech.simplelogupload">
|
|
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
|
<uses-permission android:name="android.permission.CAMERA" />
|
|
|
|
<application
|
|
android:allowBackup="false"
|
|
android:icon="@drawable/ic_app_icon"
|
|
android:roundIcon="@drawable/ic_app_icon"
|
|
android:label="SimpleLogUpload"
|
|
android:networkSecurityConfig="@xml/network_security_config"
|
|
android:supportsRtl="true"
|
|
android:largeHeap="true"
|
|
android:requestLegacyExternalStorage="true"
|
|
android:usesCleartextTraffic="false"
|
|
android:theme="@style/Theme.AppCompat.DayNight.DarkActionBar">
|
|
|
|
<!-- NEW: Compose Main Activity (LAUNCHER) -->
|
|
<activity
|
|
android:name=".ComposeMainActivity"
|
|
android:exported="true"
|
|
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
|
|
|
|
<!-- LAUNCHER - App starts here -->
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
|
|
<!-- Share intent filter for files -->
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:mimeType="*/*" />
|
|
</intent-filter>
|
|
|
|
<!-- Share intent filter for multiple files -->
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:mimeType="*/*" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<!-- QR Code Scanner Activity -->
|
|
<activity
|
|
android:name="com.journeyapps.barcodescanner.CaptureActivity"
|
|
android:screenOrientation="portrait"
|
|
android:stateNotNeeded="true"
|
|
android:theme="@style/zxing_CaptureTheme"
|
|
android:windowSoftInputMode="stateAlwaysHidden"
|
|
tools:replace="screenOrientation" />
|
|
|
|
<!-- File Upload Foreground Service -->
|
|
<service
|
|
android:name=".service.FileUploadForegroundService"
|
|
android:enabled="true"
|
|
android:exported="false"
|
|
android:foregroundServiceType="dataSync" />
|
|
</application>
|
|
</manifest> |