{"adoption": {"forks": 219, "observed_at": "2026-08-28T04:05:10.558794+00:00", "stars": 1607}, "canonical_url": "https://ross.abutalabs.com/products/permissions4m", "card": {"archived": true, "artifact_type": "library", "description": ":wrench:国产手机5.0、6.0权限适配框架/编译时注解框架/an Android Runtime Permissions Tool by using APT", "domain": ["mobile-development", "android-tools", "security"], "enriched": true, "function": ["auth", "sdk", "developer-tools"], "health_score": 10, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["jokermonn/permissions4m"], "name": "jokermonn/permissions4m", "platform": ["cross-platform"], "pushed_at": "2019-05-07T13:35:39+00:00", "repo": "jokermonn/permissions4m", "stars": 1607, "tags": ["runtime-permissions", "android", "apt", "compile-time-annotation", "chinese-phone-adaptation", "deprecated", "mobile"], "topics": [], "urls": [], "use_cases": ["request runtime permissions on Android 6.0 with one line of code", "handle permission requests on Chinese OEM phones like Xiaomi and OPPO", "request permissions on Android 5.0 devices", "force the permission rationale dialog to appear", "jump to phone manager permission settings when user denies permanently", "handle multiple permission requests synchronously with callbacks"], "what_it_is": "permissions4m is an Android runtime permission handling library built with compile-time annotations (APT), forked from MPermissions. It specializes in adapting permission requests for Android 5.0/6.0 and Chinese OEM phones like Xiaomi and OPPO.", "when_to_avoid": ["starting a new project - the library is deprecated and unmaintained", "only targeting stock Android 6.0+ where standard APIs suffice", "need ongoing support or updates for newer Android versions"], "when_to_choose": ["targeting Chinese OEM devices with quirky permission behavior", "need Android 5.0 permission support via compile-time annotations"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/permissions4m", "repo": "jokermonn/permissions4m", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "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:05:10.558794+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:10.558794+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:51:47.954403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "94393fd0e43b53f7451775aa594a2a41cc9fa9c19352bc1f79f178fafe13ed65", "fetched_at": "2026-08-28T04:05:10.558794+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jokermonn/permissions4m"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3325, "days_push": 2675, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}