feat: 新增 42 个 Android API 模块
新增模块覆盖: 系统层 (14): system, security, print, opengl, renderscript, transition, test, service_notification, service_controls, service_quicksettings, service_wallpaper, service_autofill, service_dreams, service_vr 应用层 (13): app_admin, app_backup, app_job, app_usage, app_role, app_people, appwidget, companion, credentials, mtp, sip, telecom, speech 硬件媒体层 (15): hardware_display, hardware_fingerprint, hardware_usb, hardware_input, media_audiofx, media_browse, media_session, media_tv, media_midi, media_projection, uwb, se, view_autofill, view_textclassifier, view_translation 总计 94 个模块,75,342 行代码
This commit is contained in:
1 parent
8ad62be068
commit
506f9ac725
43 files changed
+16704
-23
No files matched your search
@@ -0,0 +1,418 @@
|
||||
"""
|
||||
Android Credentials API — CredentialManager, CreateCredentialRequest, GetCredentialRequest 等
|
||||
方法签名完全对齐 Android SDK
|
||||
"""
|
||||
|
||||
import sys
|
||||
from typing import Any, Dict, List, Optional, Set, Tuple, Callable
|
||||
|
||||
from .._core import Stub, AndroidOnlyError
|
||||
from ..java.lang import RuntimeException
|
||||
|
||||
|
||||
IllegalArgumentException = type("IllegalArgumentException", (RuntimeException,), {})
|
||||
|
||||
__all__ = [
|
||||
"CredentialManager",
|
||||
"CreateCredentialRequest",
|
||||
"CreateCredentialResponse",
|
||||
"GetCredentialRequest",
|
||||
"GetCredentialResponse",
|
||||
"CredentialDescription",
|
||||
"CredentialManagerState",
|
||||
"PrepareGetCredentialResponse",
|
||||
]
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# CredentialManager
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
class CredentialManager(Stub):
|
||||
"""CredentialManager — 凭据管理器 (桌面存根)"""
|
||||
|
||||
ACTION_CREATE_CREDENTIAL = "android.credentials.action.CREATE_CREDENTIAL"
|
||||
ACTION_GET_CREDENTIAL = "android.credentials.action.GET_CREDENTIAL"
|
||||
ACTION_CLEAR_CREDENTIAL = "android.credentials.action.CLEAR_CREDENTIAL"
|
||||
|
||||
def __init__(self, context: Any = None):
|
||||
super().__init__()
|
||||
self._context = context
|
||||
self._descriptions: List["CredentialDescription"] = []
|
||||
|
||||
def createCredential(
|
||||
self,
|
||||
request: "CreateCredentialRequest",
|
||||
cancellationSignal: Any = None,
|
||||
executor: Any = None,
|
||||
callback: Callable = None,
|
||||
):
|
||||
"""创建凭据"""
|
||||
raise AndroidOnlyError("CredentialManager.createCredential() 仅在 Android 设备上可用")
|
||||
|
||||
def getCredential(
|
||||
self,
|
||||
request: "GetCredentialRequest",
|
||||
cancellationSignal: Any = None,
|
||||
executor: Any = None,
|
||||
callback: Callable = None,
|
||||
):
|
||||
"""获取凭据"""
|
||||
raise AndroidOnlyError("CredentialManager.getCredential() 仅在 Android 设备上可用")
|
||||
|
||||
def clearCredentialState(
|
||||
self,
|
||||
request: Any = None,
|
||||
cancellationSignal: Any = None,
|
||||
executor: Any = None,
|
||||
callback: Callable = None,
|
||||
):
|
||||
"""清除凭据状态"""
|
||||
raise AndroidOnlyError("CredentialManager.clearCredentialState() 仅在 Android 设备上可用")
|
||||
|
||||
def registerCredentialDescription(
|
||||
self,
|
||||
credentialDescription: "CredentialDescription",
|
||||
cancellationSignal: Any = None,
|
||||
executor: Any = None,
|
||||
callback: Callable = None,
|
||||
):
|
||||
"""注册凭据描述"""
|
||||
if credentialDescription not in self._descriptions:
|
||||
self._descriptions.append(credentialDescription)
|
||||
|
||||
def unregisterCredentialDescription(
|
||||
self,
|
||||
credentialDescription: "CredentialDescription",
|
||||
):
|
||||
"""注销凭据描述"""
|
||||
if credentialDescription in self._descriptions:
|
||||
self._descriptions.remove(credentialDescription)
|
||||
|
||||
def getCredentialManagerState(self) -> "CredentialManagerState":
|
||||
"""获取凭据管理器状态"""
|
||||
return CredentialManagerState()
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"CredentialManager@{hex(id(self))}"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
return self is other
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return id(self) & 0x7FFFFFFF
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# CreateCredentialRequest
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
class CreateCredentialRequest(Stub):
|
||||
"""CreateCredentialRequest — 创建凭据请求"""
|
||||
|
||||
class Builder(Stub):
|
||||
"""CreateCredentialRequest.Builder — 创建凭据请求构建器"""
|
||||
|
||||
def __init__(self, credentialType: str = ""):
|
||||
super().__init__()
|
||||
self._credential_type = credentialType
|
||||
self._credential_data = None
|
||||
self._candidate_query_data = None
|
||||
self._always_send_app_uri = False
|
||||
self._origin = ""
|
||||
|
||||
def setCredentialData(self, data: Any) -> "CreateCredentialRequest.Builder":
|
||||
self._credential_data = data
|
||||
return self
|
||||
|
||||
def setCandidateQueryData(
|
||||
self, data: Any
|
||||
) -> "CreateCredentialRequest.Builder":
|
||||
self._candidate_query_data = data
|
||||
return self
|
||||
|
||||
def setAlwaysSendAppUri(
|
||||
self, alwaysSend: bool
|
||||
) -> "CreateCredentialRequest.Builder":
|
||||
self._always_send_app_uri = alwaysSend
|
||||
return self
|
||||
|
||||
def setOrigin(self, origin: str) -> "CreateCredentialRequest.Builder":
|
||||
self._origin = origin
|
||||
return self
|
||||
|
||||
def build(self) -> "CreateCredentialRequest":
|
||||
req = CreateCredentialRequest.__new__(CreateCredentialRequest)
|
||||
req._credential_type = self._credential_type
|
||||
req._credential_data = self._credential_data
|
||||
req._candidate_query_data = self._candidate_query_data
|
||||
req._always_send_app_uri = self._always_send_app_uri
|
||||
req._origin = self._origin
|
||||
return req
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"CreateCredentialRequest.Builder(type={self._credential_type})"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
return self is other
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return id(self) & 0x7FFFFFFF
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._credential_type = ""
|
||||
self._credential_data = None
|
||||
self._candidate_query_data = None
|
||||
self._always_send_app_uri = False
|
||||
self._origin = ""
|
||||
|
||||
def getCredentialData(self) -> Optional[Any]:
|
||||
return self._credential_data
|
||||
|
||||
def getCredentialType(self) -> str:
|
||||
return self._credential_type
|
||||
|
||||
def getCandidateQueryData(self) -> Optional[Any]:
|
||||
return self._candidate_query_data
|
||||
|
||||
def alwaysSendAppUri(self) -> bool:
|
||||
return self._always_send_app_uri
|
||||
|
||||
def getOrigin(self) -> str:
|
||||
return self._origin
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"CreateCredentialRequest(type={self._credential_type})"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
if not isinstance(other, CreateCredentialRequest):
|
||||
return False
|
||||
return self._credential_type == other._credential_type
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return hash(self._credential_type) & 0x7FFFFFFF
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# CreateCredentialResponse
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
class CreateCredentialResponse(Stub):
|
||||
"""CreateCredentialResponse — 创建凭据响应"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._credential_data = None
|
||||
self._credential_data_result = None
|
||||
|
||||
def getCredentialData(self) -> Optional[Any]:
|
||||
return self._credential_data
|
||||
|
||||
def getCredentialDataResult(self) -> Optional[Any]:
|
||||
return self._credential_data_result
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"CreateCredentialResponse@{hex(id(self))}"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
return self is other
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return id(self) & 0x7FFFFFFF
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# GetCredentialRequest
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
class GetCredentialRequest(Stub):
|
||||
"""GetCredentialRequest — 获取凭据请求"""
|
||||
|
||||
class Builder(Stub):
|
||||
"""GetCredentialRequest.Builder — 获取凭据请求构建器"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._credential_data = None
|
||||
self._origin = ""
|
||||
self._always_send_app_uri = False
|
||||
self._candidate_query_data = None
|
||||
|
||||
def setCredentialData(
|
||||
self, data: Any
|
||||
) -> "GetCredentialRequest.Builder":
|
||||
self._credential_data = data
|
||||
return self
|
||||
|
||||
def setOrigin(self, origin: str) -> "GetCredentialRequest.Builder":
|
||||
self._origin = origin
|
||||
return self
|
||||
|
||||
def setAlwaysSendAppUri(
|
||||
self, alwaysSend: bool
|
||||
) -> "GetCredentialRequest.Builder":
|
||||
self._always_send_app_uri = alwaysSend
|
||||
return self
|
||||
|
||||
def setCandidateQueryData(
|
||||
self, data: Any
|
||||
) -> "GetCredentialRequest.Builder":
|
||||
self._candidate_query_data = data
|
||||
return self
|
||||
|
||||
def build(self) -> "GetCredentialRequest":
|
||||
req = GetCredentialRequest.__new__(GetCredentialRequest)
|
||||
req._credential_data = self._credential_data
|
||||
req._origin = self._origin
|
||||
req._always_send_app_uri = self._always_send_app_uri
|
||||
req._candidate_query_data = self._candidate_query_data
|
||||
return req
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"GetCredentialRequest.Builder@{hex(id(self))}"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
return self is other
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return id(self) & 0x7FFFFFFF
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._credential_data = None
|
||||
self._origin = ""
|
||||
self._always_send_app_uri = False
|
||||
self._candidate_query_data = None
|
||||
|
||||
def getCredentialData(self) -> Optional[Any]:
|
||||
return self._credential_data
|
||||
|
||||
def getOrigin(self) -> str:
|
||||
return self._origin
|
||||
|
||||
def alwaysSendAppUri(self) -> bool:
|
||||
return self._always_send_app_uri
|
||||
|
||||
def getCandidateQueryData(self) -> Optional[Any]:
|
||||
return self._candidate_query_data
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"GetCredentialRequest@{hex(id(self))}"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
return self is other
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return id(self) & 0x7FFFFFFF
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# GetCredentialResponse
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
class GetCredentialResponse(Stub):
|
||||
"""GetCredentialResponse — 获取凭据响应"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._credential_data_results: List[Any] = []
|
||||
|
||||
def getCredentialDataResults(self) -> List[Any]:
|
||||
return list(self._credential_data_results)
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"GetCredentialResponse(results={len(self._credential_data_results)})"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
return self is other
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return id(self) & 0x7FFFFFFF
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# CredentialDescription
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
class CredentialDescription(Stub):
|
||||
"""CredentialDescription — 凭据描述"""
|
||||
|
||||
def __init__(self, credentialType: str = "", origin: str = ""):
|
||||
super().__init__()
|
||||
self._credential_type = credentialType
|
||||
self._origin = origin
|
||||
|
||||
def getCredentialType(self) -> str:
|
||||
return self._credential_type
|
||||
|
||||
def getOrigin(self) -> str:
|
||||
return self._origin
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"CredentialDescription(type={self._credential_type})"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
if not isinstance(other, CredentialDescription):
|
||||
return False
|
||||
return (self._credential_type == other._credential_type
|
||||
and self._origin == other._origin)
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return hash((self._credential_type, self._origin)) & 0x7FFFFFFF
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# CredentialManagerState
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
class CredentialManagerState(Stub):
|
||||
"""CredentialManagerState — 凭据管理器状态"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._registered_descriptions: List["CredentialDescription"] = []
|
||||
self._is_enabled = True
|
||||
|
||||
def getRegisteredCredentialDescriptions(self) -> List["CredentialDescription"]:
|
||||
return list(self._registered_descriptions)
|
||||
|
||||
def isEnabled(self) -> bool:
|
||||
return self._is_enabled
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"CredentialManagerState(enabled={self._is_enabled})"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
return self is other
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return id(self) & 0x7FFFFFFF
|
||||
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
# PrepareGetCredentialResponse
|
||||
# ═══════════════════════════════════════════════════════════════
|
||||
|
||||
class PrepareGetCredentialResponse(Stub):
|
||||
"""PrepareGetCredentialResponse — 预备获取凭据响应"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._has_results = False
|
||||
self._pending_credential = None
|
||||
|
||||
def hasResults(self) -> bool:
|
||||
return self._has_results
|
||||
|
||||
def getPendingGetCredentialResponse(self) -> Optional["GetCredentialResponse"]:
|
||||
return self._pending_credential
|
||||
|
||||
def toString(self) -> str:
|
||||
return f"PrepareGetCredentialResponse(hasResults={self._has_results})"
|
||||
|
||||
def equals(self, other) -> bool:
|
||||
return self is other
|
||||
|
||||
def hashCode(self) -> int:
|
||||
return id(self) & 0x7FFFFFFF
|
||||
Reference in new issue
Block a user