{"adoption": {"forks": 899, "observed_at": "2026-08-28T04:09:48.675472+00:00", "stars": 6798}, "canonical_url": "https://ross.abutalabs.com/products/xxpermissions", "card": {"archived": false, "artifact_type": "library", "description": "Android Permissions Framework, Adapt to Android 17", "domain": ["mobile-development", "android-tools", "developer-tools"], "enriched": true, "function": ["auth", "sdk", "developer-tools"], "health_score": 92, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["getActivity/XXPermissions"], "name": "getActivity/XXPermissions", "platform": ["jvm"], "pushed_at": "2026-06-21T17:05:46+00:00", "repo": "getActivity/XXPermissions", "stars": 6798, "tags": ["android-permissions", "runtime-permissions", "permission-request", "androidx", "special-permissions", "android", "mobile"], "topics": ["permission-android", "permission", "easypermission", "rxpermissions", "permissionutils", "permissionsdispatcher", "permissions", "permissionx", "rxpermission", "android", "andpermission", "androidpermissions"], "urls": [], "use_cases": ["request runtime permissions on Android without boilerplate", "request special permissions like notification listener or write settings", "handle permission requests across many Android versions", "replace RxPermissions or PermissionsDispatcher in an Android app", "batch request groups of permissions with a single API"], "what_it_is": "XXPermissions is an Android runtime permission request framework written in Java that simplifies requesting normal and special permissions (storage, notifications, alarms, VPN, accessibility, and more) across Android versions. It integrates via JitPack and supports both AndroidX and legacy Support library projects.", "when_to_avoid": ["you are not developing for Android", "you prefer Jetpack's Accompanist or native ActivityResult permission APIs and want no extra dependency"], "when_to_choose": ["you are building an Android app in Java or Kotlin and need a maintained permission framework", "you need to request special/system permissions beyond standard runtime ones", "you must support both AndroidX and legacy Support library projects"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xxpermissions", "repo": "getActivity/XXPermissions", "role": "main", "score": 91}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:48.675472+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:42:05.936616+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ff30f4642bc441cca137e1d7b6749a91ec769476faab84cef6b7d48e796fdf17", "fetched_at": "2026-08-28T04:09:48.675472+00:00", "kind": "readme", "missing": false, "url": "https://github.com/getActivity/XXPermissions"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 88, "longevity": 100, "rhythm": 89}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3001, "days_push": 73, "days_rel": 73, "gap_med": 22.0, "n_releases_24m": 13}, "score": 91, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}