# luoyunxi0407/applistviewer architecture

> Architecture diagram of the GitHub repository luoyunxi0407/applistviewer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/luoyunxi0407/applistviewer
- Repository: https://github.com/luoyunxi0407/applistviewer

## Overview

AppListViewer is an Android demo for discovering installed or launcher-visible apps and displaying app details, including whether newer-targeting apps declare QUERY_ALL_PACKAGES. The user triggers a query, MainActivity gathers and filters package data through Android’s PackageManager, builds AppInfo records, applies text search, and submits results to the list adapter for display. The README describes the permission-bypass behavior as research on custom ROMs; the sampled code shows the package queries but does not establish how a particular ROM bypasses its visibility restrictions.

Main entry points: [`app/src/main/java/com/luoyunxi/applistviewer/MainActivity.kt`](https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/MainActivity.kt) (Query and Filter), [`app/src/main/java/com/luoyunxi/applistviewer/AppListAdapter.kt`](https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/AppListAdapter.kt) (App List Adapter), [`app/src/main/java/com/luoyunxi/applistviewer/AppInfo.kt`](https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/AppInfo.kt) (App Record)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inspection["App Inspection"]
  node_activity["Query and Filter<br/>[MainActivity.kt]"]
  node_package_manager["Android PackageManager"]
  node_app_info["App Record<br/>[AppInfo.kt]"]
end

subgraph group_presentation["Results Presentation"]
  node_adapter["App List Adapter<br/>[AppListAdapter.kt]"]
end

node_user(("User"))

node_user -->|"triggers query"| node_activity
node_activity -->|"queries packages"| node_package_manager
node_activity -->|"builds records"| node_app_info
node_activity -->|"submits results"| node_adapter
node_adapter -->|"reads fields"| node_app_info

click node_activity "https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/MainActivity.kt"
click node_app_info "https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/AppInfo.kt"
click node_adapter "https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/AppListAdapter.kt"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity,node_package_manager,node_app_info,node_user toneBlue
class node_adapter toneAmber
```

## Components

### App Inspection

- [Query and Filter](https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/MainActivity.kt): `app/src/main/java/com/luoyunxi/applistviewer/MainActivity.kt`
- **Android PackageManager**
- [App Record](https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/AppInfo.kt): `app/src/main/java/com/luoyunxi/applistviewer/AppInfo.kt`

### Results Presentation

- [App List Adapter](https://github.com/luoyunxi0407/applistviewer/blob/master/app/src/main/java/com/luoyunxi/applistviewer/AppListAdapter.kt): `app/src/main/java/com/luoyunxi/applistviewer/AppListAdapter.kt`

### Other components

- **User**

## Connections

- User → Query and Filter: triggers query (evidence: `README.md`)
- Query and Filter → Android PackageManager: queries packages (evidence: `app/src/main/java/com/luoyunxi/applistviewer/MainActivity.kt`)
- Query and Filter → App Record: builds records (evidence: `app/src/main/java/com/luoyunxi/applistviewer/MainActivity.kt`)
- Query and Filter → App List Adapter: submits results (evidence: `app/src/main/java/com/luoyunxi/applistviewer/MainActivity.kt`)
- App List Adapter → App Record: reads fields (evidence: `app/src/main/java/com/luoyunxi/applistviewer/AppListAdapter.kt`)
