Skip to content

AHS-Mobile-Labs/Permission_Scanner

Repository files navigation

Permission Scanner icon

Permission Scanner

A lightweight Android app that reveals exactly what permissions every installed app holds — and whether they actually need them.

Flutter Dart Platform License Release


Features

  • Full app scan — scans every installed app via a native MethodChannel, returning permissions, install source, and system flag
  • Risk analysis — assigns each app a privacy score (0–100) and risk level (safe / medium / dangerous) based on dangerous permission count
  • Justification engine — maps app capabilities (e.g. "Take Photos") to the permissions they require and flags unjustified access
  • Smart caching — fingerprint-based cache invalidation means the UI loads instantly on repeat visits; only re-scans when apps change
  • Interactive dashboard — animated security score ring, risk distribution bar, quick actions, and per-app tiles
  • Permission database — searchable reference of all Android permissions with descriptions, grouped by category
  • Notifications — optional local alerts when a newly installed app requests a high number of dangerous permissions
  • Filter & sort — segment by user apps, system apps, or unknown sources; sort by name or risk level
  • Developer mode — toggle to reveal low-level / non-dangerous permissions on the detail screen
  • Verification dialog — tag an app's capabilities and see which permissions are justified by those capabilities

Screenshots

Security Dashboard App List Permission Info Dashboard Risk Filter

Architecture

lib/
├── main.dart                          # App entry, splash → main flow
├── models/
│   ├── app_info.dart                  # AppInfo model with RiskLevel enum
│   ├── permission_info.dart           # PermissionInfo model
│   └── permission_justification.dart  # Capability → permission mapping
├── screens/
│   ├── splash_screen.dart             # Animated splash with progress
│   ├── home_screen.dart               # App list with search & filters
│   ├── app_detail_screen.dart         # Per-app permission breakdown
│   ├── permission_info_screen.dart    # Permission reference database
│   └── dashboard_screen.dart          # Security overview dashboard
├── services/
│   ├── app_providers.dart             # Riverpod state providers
│   ├── cache_service.dart             # Hive-backed cache (5 boxes)
│   ├── notification_service.dart      # Local notification service
│   ├── permission_analyzer.dart       # Risk scoring & analysis
│   ├── permission_justification_service.dart
│   └── permission_scanner_service.dart # Native bridge
├── utils/
│   ├── app_colors.dart                # Material 3 theme & palette
│   └── permission_database.dart       # Permission definitions
└── widgets/
    ├── app_card.dart
    ├── filter_sort_bar.dart
    ├── permission_history_chart.dart
    ├── permission_item.dart
    ├── permission_verification_dialog.dart
    ├── risk_badge.dart
    └── stat_card.dart

Key design decisions

Pattern Detail
State management flutter_riverpodAsyncNotifierProvider for app list, StateProvider for filters
Caching Hive with 5 boxes; fingerprint check avoids redundant native calls
Background work compute() isolate for permission enrichment off the main thread
Native bridge MethodChannel('permission_scanner') with getInstalledApps / getAppsFingerprint
Risk scoring 100 − (10 × dangerous permissions), clamped 0–100; justification can reduce risk one level

Getting started

Prerequisites

  • Flutter SDK ≥ 3.11.1
  • Android SDK (minSdk 21 / targetSdk 35)
  • An Android device or emulator

Build & run

git clone https://github.com/AHS-Mobile-Labs/Permission_Scanner.git
cd Permission_Scanner
flutter pub get
flutter run

Generate launcher icon

dart run flutter_launcher_icons

Permissions

Permission Why
QUERY_ALL_PACKAGES Read the permission manifest of every installed app
POST_NOTIFICATIONS Send local alerts for high-risk apps (requested at runtime, non-blocking)

Dependencies

Package Version Purpose
flutter_riverpod ^2.4.1 State management
hive / hive_flutter ^2.2.3 / ^1.1.0 Local key-value cache
fl_chart ^0.65.0 Data visualization
flutter_local_notifications ^17.1.0 Local push notifications
permission_handler ^11.0.0 Runtime permission requests
intl ^0.19.0 Date formatting

Star History

Star History Chart

Author

Ameer Hamza Saifi

© 2026 AHS Mobile Labs

About

A privacy-focused Android app that scans installed apps to reveal permissions, risk levels, and potential misuse.

Topics

Resources

License

Stars

Watchers

Forks

Contributors